strtok_r():
时间: 2024-08-16 22:01:16 浏览: 47
C语言切割多层字符串(strtok_r strtok使用方法)
`strtok_r()` 是 C 标准库中的一个字符串处理函数,用于在指定的分隔符下分解(tokenize)一个字符串。这个函数是在 `C99` 标准中引入的,它提供了线程安全的版本,相比不带 `_r` 后缀的原始 `strtok()` 函数,`strtok_r()` 在多个线程环境下使用更安全。
参数说明:
- `str`: 待处理的字符串。
- `prev_ptr`: 上一次调用 `strtok_r()` 的返回指针,第一次调用时设为 `NULL` 或空指针,表示从头开始解析。
- 当找到下一个有效 token 时,返回该 token 的复制(内部动态分配),如果遍历到字符串末尾或未找到分隔符,则返回 `NULL`。
- 如果遇到错误,例如内存分配失败,会返回 `NULL` 并设置 `errno` 错误标志。
重要的是,由于 `strtok_r()` 动态分配了内存,所以在每次使用后,最好释放这个内存,通常通过调用 `free()` 函数:
```c
char *token;
while ((token = strtok_r(str, delim, &save_ptr)) != NULL) {
// 使用 token
free(token);
}
```
在这个循环里,`save_ptr` 指针保存了上一次 `strtok_r()` 的状态,在下次调用时传入。
阅读全文