函数原型
char *strtok_r(char *str, const char *delim, char **saveptr);
说明
strtok_r
函数是strtok
函数的可重入版本。str
为要分解的字符串,delim
为分隔符字符串。char **saveptr
参数是一个指向char *
的指针变量,用来在strtok_r
内部保存切分时的上下文。- 第一次调用
strtok_r
时,str
参数必须指向待提取的字符串,saveptr
参数的值可以忽略。 - 连续调用时,
str
赋值为NULL
,aveptr
为上次调用后返回的值,不要修改。
代码实例
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "123,234,345,456,789";
char * buf = str;
char * str_p = NULL;
char *a1 = ",";
char *token ;
while((token = strtok_r(buf, a1, &str_p)) != NULL)
{
if(token != NULL)
printf("token = [%s]\n", token);
if(str_p != NULL)
printf("str_p = [%s]\n", str_p);
printf("--------------------------------------\n");
buf = NULL;
}
return 0;
}
运行结果: