简介:strtok函数是 C 语言标准库中用于分割字符串的函数。
作用是将一个字符串根据指定的分隔符分割成多个子字符串。
原型:char *strtok(char *str, const char *delim);
str是要分割的原始字符串。在第一次调用strtok时,str应指向待分割的字符串。在随后的调用中,str应该设置为NULL。
delim是一个包含所有分隔符的字符串。每次调用strtok时,它都会返回下一个分割出的子字符串。如果没有更多的子字符串可以检索,它将返回NULL。
使用示例
#include <string.h> #include <stdio.h> int main() { char str[80] = "This is - www.runoob.com - website"; const char s[2] = "-"; char *token; // 获取第一个子字符串 token = strtok(str, s); //printf("%s\n",str); //strtok会修改源字符串 // 继续获取其他的子字符串 while(token != NULL) { printf("%s\n", token); token = strtok(NULL, s); } return 0; }输出结果
This is www.runoob.com website注意事项
strtok函数会修改被操作的字符串,因此通常会对原始字符串进行复制,并确保这个副本是可修改的。
在多线程环境中使用strtok需要特别小心,因为它使用静态变量来存储每次调用后的剩余字符串,这可能会导致线程安全问题。
如果需要保持原始字符串不变,可以考虑使用其他函数,如strchr和sscanf的组合
应用:
使用strtok函数可以有效地处理字符串分割任务,尤其是在处理格式化的数据,如CSV 文件或网络协议中的数据时。掌握strtok的使用对于 C 语言程序员来说是非常有用的。