strtok_r函数内容
时间: 2023-02-20 19:04:01 浏览: 49
strtok_r 函数是一个用于分割字符串的函数,它是对 strtok 函数的安全版本。strtok_r 函数以参数 str 为输入,以某一个分隔符作为分隔标志,将 str 分割为一个个独立的片段。由于 strtok_r 函数使用了两个参数,而不是全局变量,所以它是线程安全的。
语法:
```
char *strtok_r(char *str, const char *delim, char **saveptr);
```
参数说明:
- str:指向要被分割的字符串。
- delim:指向用于分隔字符串的分隔符字符串。
- saveptr:指向存储内部状态的指针。
返回值:
strtok_r 函数在成功执行后,返回指向当前分割的字符串的指针;如果到达字符串的末尾,则返回空指针。
相关问题
strtok和strtok_r
strtok()和strtok_r()都是用于字符串分割的函数。
strtok()函数使用一个静态缓冲区来进行解析,因此不是线程安全的。如果线程安全对你很重要,那么应该使用strtok_r()函数。
strtok_r()函数是strtok()的可重入版本。saveptr参数是一个指向char *变量的指针,它在strtok_r()内部用于在解析相同字符串的连续调用之间维护上下文。
strtok_r函数用法
strtok_r函数是一个字符串分割函数,用于将一个字符串按照指定的分隔符进行分割,并返回分割后的子字符串。它的用法如下:
```c
char *strtok_r(char *str, const char *delim, char **saveptr);
```
其中,参数说明如下:
- `str`:要分割的字符串。
- `delim`:分隔符字符串,可以包含多个字符。
- `saveptr`:保存分割状态的指针,需要传入一个指向char指针的变量的地址。
函数的返回值为分割后的子字符串,如果没有找到分隔符,则返回NULL。
使用strtok_r函数进行字符串分割的一般步骤如下:
1. 第一次调用时,将待分割的字符串传入str参数。
2. 后续调用时,将str参数设置为NULL。
3. 在每次调用时,会返回一个子字符串,并将saveptr指向下一个子字符串的起始位置。
下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World! CSDN";
const char delim[] = " ,!";
char *token;
char *saveptr;
token = strtok_r(str, delim, &saveptr);
while (token != NULL) {
printf("%s\n", token);
token = strtok_r(NULL, delim, &saveptr);
}
return 0;
}
```
输出结果为:
```
Hello
World
CSDN
```
阅读全文