作者:wsx迪_257 | 来源:互联网 | 2023-09-24 20:38
在网上看了一圈,全是复制粘贴的官方解释,还不如自己写几行代码理解得快,真的是百看不如一试
strtok用法
char *token = strtok(char *str, char *delim);
作用:在str字符串里面查找delim分隔符,查找到之后,把该处字符替换成’\0’,会改变原来的字符串str
返回值:如果str是空,返回空;
查找到delim,返回查找到的子串的第一个位置;
查找不到,不返回空,返回str字符串起始位置;
多次调用:第一次查找到delim,strtok内部this指针会跳到delim后一个位置;再次调用,strtok的第一个参数应该设成NULL;
例:
char str[80] = "911111-82222222-73333333333";
const char delim[2] = "-";
char *token;
token = strtok(str,delim);
while(token != NULL){
token = strtok(NULL, delim);
printf(“%s\n”,token );
}
输出:
911111
82222222
73333333333
(str变成911111)
Strtok_r用法:
char *strtok_r(char *str, const char *delim, char **saveptr);
saveptr相当于strtok()内部的this指针,指向查找到的分隔符后面的子串
例:
char str[80] = "911111-82222222-73333333333";
const char delim[2] = "-";
char *token;
char *val;
token = strtok_r(str,delim,&val);
while(token != NULL){
printf("============== token %s\n", token);
printf("============== val %s\n", val);
token = strtok_r(NULL, delim,&val);
}
if(token == NULL)
printf("=============== NULLLLL ==========\n");
输出:
============== token 911111
============== val 82222222-73333333333
============== token 82222222
============== val 73333333333
============== token 73333333333
============== val
=============== NULLLLL ==========