strtok_r的用法
时间: 2023-08-31 12:05:41 浏览: 91
strtok_r是一个字符串分割函数,用于将一个字符串按照指定的分隔符进行分割,并返回分割后的字符串片段。与strtok函数不同的是,strtok_r是线程安全的版本,可以避免多线程同时调用strtok导致数据混乱的情况。
strtok_r的函数原型如下:
```c
char *strtok_r(char *str, const char *delim, char **saveptr);
```
其中,str是要被分割的字符串,delim是分割符,saveptr是保存上一次分割位置的指针。
使用strtok_r的方法如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello world,how are you?";
char *token;
char *rest = str;
char *saveptr;
while ((token = strtok_r(rest, " ,", &saveptr))) {
printf("%s\n", token);
rest = NULL;
}
return 0;
}
```
该代码会输出以下结果:
```
hello
world
how
are
you?
```
在第一次调用strtok_r时,函数会使用str和delim进行分割,并将分割结果返回。在后续的调用中,函数会使用NULL作为第一个参数,表示继续对上一次分割后的结果进行分割。saveptr参数用于保存上一次分割位置,确保每次分割返回的都是不重复的字符串片段。
阅读全文