strtok_r是什么函数
时间: 2023-08-31 19:05:48 浏览: 93
C语言切割多层字符串(strtok_r strtok使用方法)
`strtok_r` 是一个 C 标准库中的函数,用于将字符串分割成一个个子字符串,常用于解析文本文件或网络协议等。它的完整原型如下:
```c
char *strtok_r(char *str, const char *delim, char **saveptr);
```
其中:
- `str` 为要分割的字符串,第一次调用时传入该字符串的指针,后续调用传入 NULL 即可。
- `delim` 为分割字符串的分隔符。
- `saveptr` 为保存分割位置的指针,在第一次调用时传入一个指针变量的地址(例如 `char *saveptr = NULL;`),后续调用传入该指针变量的地址即可。
每次调用 `strtok_r` 函数,它会从 `str` 开始扫描,跳过分隔符,并返回第一个分隔符之前的子字符串。在第一次调用时,需要传入原字符串的指针;后续调用则传入 NULL,函数会从上一次分割的位置继续扫描,直到分割完成,返回 NULL。
需要注意的是,`strtok_r` 函数会修改原字符串,将分隔符替换为 '\0' 字符,因此原字符串必须为可写的字符数组,不能是常量字符串。此外,由于 `strtok_r` 函数是线程安全的,它使用了 `saveptr` 指针来保存每次分割的位置,因此可以同时在多个线程中使用。
阅读全文