strtok()函数分割字符串
时间: 2023-10-15 21:24:35 浏览: 102
strtok()函数是C语言中用于分割字符串的函数。它可以将一个字符串按照指定的分隔符进行拆分,并返回拆分后的子字符串。
函数原型如下:
```c
char *strtok(char *str, const char *delim);
```
参数说明:
- `str`:要进行分割的字符串。在第一次调用时传入需要分割的字符串,在后续调用时传入NULL。
- `delim`:分隔符字符串,可以包含多个分隔符。
函数返回值:
返回一个指向被分割出来的子字符串的指针,如果没有可分割的子字符串,返回NULL。
使用示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, world! This is a test.";
char *token;
token = strtok(str, " ,!"); // 使用空格、逗号和感叹号作为分隔符
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, " ,!"); // 继续下一个分隔符
}
return 0;
}
```
输出结果:
```
Hello
world
This
is
a
test
```
以上是`strtok()`函数的基本用法,你可以通过设置不同的分隔符来实现不同的字符串分割需求。
相关问题
如何使用strtok函数分割字符串?
在C语言中,可以使用strtok函数来分割字符串。strtok函数可以将一个字符串分割成多个子字符串,根据指定的分隔符进行分割。
下面是使用strtok函数分割字符串的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello,World,How,Are,You";
char *token;
// 使用逗号作为分隔符
token = strtok(str, ",");
// 循环获取分割后的子字符串
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, ",");
}
return 0;
}
```
运行上述代码,输出结果为:
```
Hello
World
How
Are
You
```
在C++中,可以使用stringstream类来分割字符串。下面是使用stringstream类分割字符串的示例代码:
```cpp
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::string str = "Hello,World,How,Are,You";
std::stringstream ss(str);
std::string token;
// 使用逗号作为分隔符
while (std::getline(ss, token, ',')) {
std::cout << token << std::endl;
}
return 0;
}
```
运行上述代码,输出结果为:
```
Hello
World
How
Are
You
```
strtok_s()函数分割字符串
strtok_s()函数是C语言中用于分割字符串的函数,它可以将一个字符串按照指定的分隔符进行分割,并返回分割后的第一个子字符串的指针。该函数的原型如下:
```c
char *strtok_s(char *str, const char *delim, char **context);
```
其中,str是要分割的字符串,delim是分隔符,context是一个指向指针的指针,用于存储分割后剩余部分的指针。该函数会将str中的第一个分隔符替换为'\0',并返回分割后的第一个子字符串的指针。如果没有找到分隔符,则返回NULL。
需要注意的是,strtok_s()函数是线程安全的,因为它使用了一个上下文指针来存储分割后剩余部分的指针。
阅读全文