strtok_r和strtok_s 该怎么使用
时间: 2023-06-04 10:07:58 浏览: 263
strtok_r 和 strtok_s 都是用来分割字符串的函数。它们的功能大致相同,但用法略有不同。
strtok_r 函数是线程安全的。它需要传入三个参数,分别是待分割的字符串、分隔符、以及一个指向静态字符型指针的指针,用来存储当前的分割状态。每次调用 strtok_r 函数时,它都会返回一个指向下一个子字符串的指针。示例代码如下:
```
char str[] = "This is a sample string.";
char *token, *saveptr;
token = strtok_r(str, " ", &saveptr);
while (token != NULL) {
printf("%s\n", token);
token = strtok_r(NULL, " ", &saveptr);
}
```
strtok_s 函数是 Microsoft Visual Studio 提供的安全版本的 strtok 函数。它还需要传入一个额外的参数 max\_tokens,表示最多分割多少个子字符串。示例代码如下:
```
char str[] = "This is a sample string.";
char *token, *next_token;
char delimiters[] = " ";
errno_t err;
token = strtok_s(str, delimiters, &next_token);
while (token != NULL) {
printf("%s\n", token);
err = strtok_s(NULL, delimiters, &next_token);
}
```
需要注意的是,strtok_s 函数只在 Microsoft Visual Studio 中可用,如果在其他平台上编译可能会遇到问题。
阅读全文