首页 > 编程知识 正文

ioctl函数详解,strtok返回值

时间:2023-05-04 04:38:52 阅读:144936 作者:1720

strtok ) )函数的详细信息!

1 .定义

将字符串分解为一系列字符串。 s是要分解的字符,delim是分隔符。 当传递字符串时,传递的字符串中的每个字符都是分隔符。 首次调用时,s指定要分解的字符串,然后再次调用时,将s设置为NULL。 位于头文件#includestring.h中。

2 .原型

char*strtok(chars[],const char *delim );

3 .说明

(1) strtok ) )在参数s的字符串中发现了参数delim中包含的分隔符的情况下,将该字符变更为0字符。 在第一次调用中,strtok ()必须提供参数s字符串,而在后续调用中将参数s设置为NULL。 每次调用成功时,返回指向分割片段的指针。

)2)返回值

一个从s开头开始的分段字符串。 如果在末尾找到了s中的字符,则返回NULL。 如果在delim中找不到字符,则返回指向当前strtok字符串的指针。 所有delim中的字符都将被过滤,过滤位置将设置为拆分的节点。

)3)请注意,如果使用此函数进行字符串拆分,则分解后的字符串的完整性将受损,调用前和调用后的s将不同。 第一次拆分后,原始字符串str是拆分完成后的第一个字符串,而剩下的字符串存储在一个静态变量中,因此多线程同时访问该静态变量时会出错。

4 .使用

strtok函数破坏了分解后的字符串的完整性,调用前和调用后的s已经不同。 要保持原始字符串的完整性,请使用strchr和sscanf的组合等。

# include string.h # include stdio.hint main (void ) ) charinput(16 )='ABC,d '; char*p;/* strtokplacesanullterminatorinfrontofthetoken,if found */p=strtok (输入、'、'; if(p ) printf('%sn ',p );/* asecondcalltostrtokusinganullasthefirstparameterreturnsapointertothecharacterfollowingthetoken */p=strtok (空,',),p 返回0; (5、strtok_s函数

strtok_s是windows下的拆分字符串安全函数,该函数的原型为:

char*strtok_s(char*strtoken,const char *strDelimit,char **buf );

此函数通过将剩馀字符串存储在buf变量而不是静态变量中来确保安全性。

6、strtok_r函数

strtok_s函数是用于在linux上拆分字符串的安全函数,声明如下:

char*strtok_r(char*str,const char *delim,char **saveptr );

该函数也损害了具有分解字符串的完整性,但通过将剩下的字符串保存在saveptr变量中,保证了安全性。

示例:

# include stdio.h # include stdlib.h # include string.hint main ({ char str [ ]=' ab,cd,ef '; char *ptr; char *p; printf (before strtok : str=% sn ),str ); printf(Begin:(n ) ); ptr=strtok_r(str,',',p ); wile(ptr!=NULL ) {printf('str=%sn ',str ); printf(ptr=%s(n ),ptr ); ptr=strtok_r(null,',',p ); }返回0; }输入结果。 before strtok: str=ab,cd,ef begin : str=ab ptr=abstr=ab ptr=CD str=ab ptr=ef

/* * * * * * * * * * * * * * * * * *

必须包含头文件string.h才能使用strtok函数

#include string.h strtok函数的作用是用指定的字符拆分字符串。

p=strtok(buf,' $ ';

p是指针,buf也是指针。 该代码意味着将buf中的字符串以“$”为分隔符进行分割,并将分割后的字符串保存在指针p中。

再次调用strtok函数时,将buf替换为NULL,不需要写buf。 也就是说:

p=strtok (空,' $ ';

必须注意的是,strtok函数会破坏拆分前的字符串。 也就是说,每次分割时,原始字符串都会减少一部分,损害完整性。

p=strtok(buf,' $ '; while(p!=NULL ) {p=strtok(null,' $ ' ); if(p==null ) { break; }

while循环分离中之所以有一个语句来确定p是否等于NULL,是因为当strtok函数被拆分到最后而什么都分不开时,它会返回NULL指针,因此需要做出退出循环的判断。 否则,会发生段错误。 我们还发现,必须在前面对指针的使用进行判断,以确定指针是否为空指针。 如果是空指针,则必须报告错误。 否则,即使发生段错误,也不知道在哪里发生了错误。 strtok函数的分隔符可以是多个,不一定只有一个

p=strtok(buf,' $,';

此代码意味着使用“$”和“,”作为分隔符拆分buf中的字符串。 每次遇到这两个字符中的任意一个都会被分割。 “”两个字符而不是“$”连接在一起才拆分。 记住遇到其中一个字符就可以了,函数的使用就会变得人性化。

strtok函数是非常容易使用的字符串处理函数,我处理gps数据时,使用该函数提取所需的纬度经度和卫星号码等数据。 所以,使用这个函数对编程非常有帮助。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。