在C语言编程里头,处理诸如需要将用逗号分隔的名单拆分成一个个独立名字,或者把一行命令按空格切分成多个参数这类都是常见却又容易出错的字符串任务时,C语言strtok函数,就如同仿佛是一把具备像“魔法剪刀”那样功能的工具,能够协助你较为轻松地去完成字符串的分割任务。
什么是strtok函数?
strtok属于C标准库里头的一个函数,其作用是把字符串依照既定的分隔符来实施分割,它所返回的是指向接下来子字符串也就是token的指针,而且会持续到不存在更多子字符串的时候才停止。
函数原型
#include char *strtok(char *str, const char *delim);
使用示例
假定,我们有着这么一个以逗号进行分隔的字符串:"apple,banana,orange,grape",我们期盼将其拆分成四个水果名字。
#include #include int main() { char str[] = "apple,banana,orange,grape"; // 注意:必须是可修改的数组 char *token; const char delim[2] = ","; // 第一次调用,传入原始字符串 token = strtok(str, delim); // 循环获取所有 token while (token != NULL) { printf("%s\n", token); token = strtok(NULL, delim); // 后续调用传入 NULL } return 0;}输出结果:
applebananaorangegrape
需要着重留意的是,原始字符串将会被更改:调用strtok时每次遇到分隔符处都会写入'\0'进而截断字符串,所以传进去的字符串必须是能够被修改的那种(绝不是像char *str ="..."这样的字符串字面量)。它并非线程安全的:strtok借助内部静态变量来保存状态,故而在多线程情形下应当采用strtok_r(指POSIX标准的)或者自行去实现安全版本。持续的分隔符号会被视作一个,比如,“a,,b”会被划分成“a”以及“b”,处于中间的空的token会被略过,为何研习strtok函数是显著重要?
明白C语言strtok函数,是晓得字符串处理以及掌握字符串分割要领的根基。不管是于解析配置文件之时,处理用户输入之际,或是在应对算法题去拆分数据的情况下,strtok都是一个实用且高效的工具。
小结
经由此处文本,你理应已然知晓怎样运用strtok函数去划分字符串。牢记关键要点:首次传递原生字符串,随后传递NULL;要保证字符串具备可修改性;留意其并非线程安全的特性。多多加以练习,如此你便能娴熟运用这把“魔法剪刀”了!