【strtok函数的用法】`strtok` 是 C 语言中一个非常常用的字符串处理函数,主要用于将字符串按指定的分隔符进行分割。它在处理文本数据、解析命令行参数、读取配置文件等场景中非常实用。
一、函数简介
| 函数名 | `strtok` |
| 头文件 | ` |
| 功能 | 将字符串按指定分隔符分割成多个子字符串 |
| 返回值 | 指向分割后子字符串的指针,若无更多子字符串则返回 `NULL` |
二、函数原型
```c
char strtok(char str, const char delim);
```
- 参数说明:
- `str`: 要被分割的字符串。
- `delim`: 分隔符集合(可以是多个字符)。
三、使用方法
1. 第一次调用:传入原始字符串和分隔符。
2. 后续调用:传入 `NULL` 和相同的分隔符,继续获取下一个子字符串。
四、示例代码
```c
include
include
int main() {
char str[] = "apple,banana,orange";
const char delim = ",";
char token;
token = strtok(str, delim);
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, delim);
}
return 0;
}
```
输出结果:
```
apple
banana
orange
```
五、注意事项
| 注意事项 | 说明 |
| 原始字符串会被修改 | `strtok` 会将分隔符替换为 `\0`,因此原字符串内容会被破坏 |
| 不支持多线程 | 在多线程环境中应使用 `strtok_r`(C99 标准) |
| 分隔符可包含多个字符 | 如 `delim = ",; "` 可以同时处理逗号、分号和空格 |
| 需要手动管理状态 | 后续调用必须传入 `NULL`,否则会重新开始分割 |
六、总结表格
| 项目 | 内容 |
| 函数名 | `strtok` |
| 所属头文件 | ` |
| 功能 | 字符串分割 |
| 参数1 | 待分割的字符串 |
| 参数2 | 分隔符集合 |
| 返回值 | 分割后的子字符串指针 |
| 是否破坏原字符串 | 是 |
| 支持多线程 | 否(建议使用 `strtok_r`) |
| 示例 | `"apple,banana"` → `"apple"`, `"banana"` |
通过合理使用 `strtok`,可以高效地处理字符串分割任务,但在使用时需要注意其对原始字符串的修改特性以及线程安全性问题。


