strtok_r()
时间: 2023-09-03 21:14:50 浏览: 92
C语言切割多层字符串(strtok_r strtok使用方法)
strtok_r()是一个字符串分割函数,是strtok()的可重入版本,也即线程安全版本。它用于将一个字符串根据指定的分隔符进行分割,并返回分割后的第一个子串。它的函数原型如下:
```c
char *strtok_r(char *str, const char *delim, char **saveptr);
```
其中,参数`str`是要分割的字符串,参数`delim`是分隔符,参数`saveptr`是一个指向指针的指针,用于保存上次分割剩下的字串。每次调用`strtok_r()`时,需要将`str`设置为NULL以继续分割同一个字符串。返回值是分割得到的第一个子串。
下面是一个使用`strtok_r()`的例子:
```c
#include <stdio.h>
#include <string.h>
#define SIZE_16 16
int main(int argc, const char *argv[]) {
char *buf = NULL;
char *savePtr = NULL;
char data = "1,2,3,4";
buf = strtok_r(data, ",", &savePtr);
while (buf != NULL) {
printf("%s\n", buf);
buf = strtok_r(NULL, ",", &savePtr);
}
return 0;
}
```
在这个例子中,我们将字符串"1,2,3,4"按逗号进行分割,并逐个打印出分割后的子串。`strtok_r()`函数使用了`data`作为被分割的字符串,`,`作为分隔符,并通过`&savePtr`将分割剩下的字串保存起来。
总结来说,`strtok_r()`是一个实现字符串分割的函数,它具有可重入性和线程安全性,通过指定分隔符将一个字符串分割成多个子串,并返回分割后的第一个子串。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [strtok_r函数的使用](https://blog.csdn.net/weixin_43890889/article/details/117154817)[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_1"}}] [.reference_item style="max-width: 50%"]
- *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_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文