strtok_r函数
时间: 2023-09-03 12:16:17 浏览: 50
strtok_r函数是函数strtok的可重入版本,也即线程安全版本。在函数strtok中剩余字符串是存储在一个静态变量中,因此,多线程在使用该静态变量时会引起冲突。而strtok_r函数则使用用户传入的指针为每个用户重新申请变量,从而可以保证线程安全。使用strtok_r函数可以将一个字符串按照指定的分隔符进行分割,得到多个目标子串。函数定义形式如下:
```c
#include <string.h>
char *strtok_r(char *str, const char *delim, char **saveptr);
```
其中,`str`是被分割的字符串,`delim`是分隔符,而`saveptr`是一个供内部使用的指针,用于保存上次分割剩下的子串。函数返回值是一个指针,指向从被分割字符串中得到的第一个目标子串。注意,连续分割同一个字符串时,除了第一次调用函数时`str`不能为`NULL`,后续调用需将`str`设置为`NULL`。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [线程安全的字符串分割函数strtok_r](https://blog.csdn.net/zhanxiao5287/article/details/89540004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [字符串分割函数strtok_r的用法](https://blog.csdn.net/hjx_1000/article/details/13628949)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]