char *strtok_r (char *__restrict, const char *__restrict, char **__restrict);
时间: 2023-08-11 21:08:10 浏览: 133
`strtok_r`函数是C语言中的一个线程安全版本的字符串分割函数,与`strtok`函数类似,用于将字符串分割成多个子字符串。
它的函数原型为:
```c
char *strtok_r(char *__restrict str, const char *__restrict delimiters, char **__restrict saveptr);
```
第一个参数是要分割的字符串(或者是NULL表示继续分割上一次调用的字符串),第二个参数是分割的标志字符(或者是NULL表示继续使用上一次调用的标志字符),第三个参数是指向指针的指针,用于保存分割位置信息。
与`strtok`不同的是,`strtok_r`使用了一个额外的指针参数`saveptr`来保存分割位置信息,因此可以在多线程环境下安全使用。
下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello,World,How,Are,You";
const char delimiters[] = ",";
char *saveptr;
char *token = strtok_r(str, delimiters, &saveptr);
while (token != NULL) {
printf("%s\n", token);
token = strtok_r(NULL, delimiters, &saveptr);
}
return 0;
}
```
运行结果与之前的示例相同:
```
Hello
World
How
Are
You
```
这个示例使用`strtok_r`函数将字符串"Hello,World,How,Are,You"按照逗号分割成多个子字符串,并逐个打印出来。`saveptr`保存了分割位置信息,以便在后续调用中继续分割剩余的字符串。
阅读全文