strtok_r 用法
时间: 2024-12-19 08:12:39 浏览: 19
`strtok_r` 是 C 标准库中的一个函数,它实现了线程安全的字符串分割操作,类似于非线程安全的 `strtok` 函数。`strtok_r` 的全称是 "reentrant" 版本,其用法如下:
```c
char *token;
char buffer[BUFSIZ]; // 存储待分割的字符串
// 第一次调用,初始化分隔符和指针
if ((token = strtok_r(str, delimiter, &save_ptr)) == NULL) {
// 表示字符串已经处理完,或最初的字符串为空
}
while (token != NULL) {
// 处理当前的 token,将其复制到缓冲区或其他地方
strncpy(buffer, token, sizeof(buffer) - 1] = '\0'; // 添加终止符
// 下一次分割,保存器 save_ptr 会记住上次停止的地方
token = strtok_r(NULL, delimiter, &save_ptr);
}
```
这里的参数解释:
- `str`:需要被分割的原始字符串。
- `delimiter`:分隔符,可以是一个字符数组或单个字符,用于标识哪些部分应该被视为分隔。
- `save_ptr`:指向一个 char 类型的指针,第一次调用时传入 NULL,后续调用时传递上一次的返回值,用于保持状态。
`strtok_r` 返回的是当前处理的 token,如果到达了字符串结尾或者没有找到分隔符,返回 `NULL`。每次循环结束后,为了继续下一轮分割,你需要提供 NULL 和上一次的 `save_ptr` 作为新的参数。
阅读全文