#C 语言标准库函数 strtok
/*********************************************
* @brief 将字符串按照指定子串分割,逐个返回分割后的 token
* @param str 被分割的字符串
* @param delim 用于分割的子串
* @return 下一个 token 的地址
********************************************/
char* strtok(char* restrict str, const char* restrict delim);
说明
将字符串按照指定子串分割,逐个返回分割后的 token。
注意:
- 这个函数是破坏性的,它会将源字符串
str
中的分割字符串delim
的首字母修改为'\0'
。 - 这个函数是线程不安全的,它使用静态变量标记下一次返回 token 的位置
参数
str
- 被分割的字符串- 获取下一个 token 时,此参数传
NULL
- 获取下一个 token 时,此参数传
delim
- 用于分割的子串
返回值
- 下一个 token
#示例
#include <stdio.h>
#include <string.h>
int main(void)
{
char text[] = "Pandas are very cute"; // 被分割的字符串
const char* delim = " "; // 通过空格进行分割
char* token = strtok(text, delim); // 首次调用时传递完整参数,返回第一个 token
while(token != NULL)
{
printf("%s\n", token);
token = strtok(NULL, delim); // 后续调用时第一个参数传递 NULL,逐次返回 token
}
return 0;
}
说明:
通过 strtok
查找空格及标点符号,从而实现单词的分割提取。
运行结果:
Pandas are very cute