【C语言】神奇的分割利器:strtok函数解析

高耳机High-Earphone 2024-07-06 10:05:03 阅读 73

strtok 函数是C语言中一个用于分割字符串的函数。它被包含于头文件<string.h>中。

它可以将一个字符串按照指定的分隔符进行分割,每次调用返回被分割出的部分,并在内部记录当

前位置,以便下一次调用时能够继续分割。

函数原型:

<code>char *strtok(char *str, const char *delim);

str:      要分割的字符串,第一次调用时传入需要分割的字符串,之后传入 NULL。

delim: 分隔符字符串,用于指定分隔字符串的分隔符集合。

strtok函数找到str中的下⼀个标记,并将其⽤ \0 结尾,返回⼀个指向这个标记的指针。

(注:strtok函数会改变被操作的字符串,所以在使⽤strtok函数切分的字符串⼀般都是临时拷贝

的内容并且可修改。)

 

下面给出一个实例:

#include <stdio.h>

#include <string.h>

int main()

{

// 定义一个字符串数组,并初始化

char arr[] = "High-Earphone@qq.com.666@.gaoerji";

// 定义分隔符字符串

char* sep = "@.";

// 定义一个指向字符串的指针,用于存储每次分割得到的子字符串

char* str = NULL;

// 使用 strtok 函数进行字符串分割,每次调用都会返回被分割出的部分

for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep))

{

// 输出每次分割得到的子字符串

printf("%s\n", str);

}

return 0;

}

运行结果为:

在这段代码中,我们首先定义了一个字符串 <code>arr,其中包含了需要分割的原始字符串。然后,我们定义了分隔符字符串 sep,它包含了用来分割原始字符串的字符。接着,我们使用 strtok 函数进行字符串分割。在 for 循环中,我们不断调用 strtok 函数,每次获得分割出的子字符串,并将其输出。最终,整个字符串被成功分割并输出。 

由于for循环的初始化只执行一次的特性,strtok函数的第⼀个参数不为 NULL ,函数将找到str中第⼀个标记,strtok函数将保存它在字符串中的位置。

而在后续循环赋值过程中,strtok函数的第⼀个参数为 NULL ,函数将在同⼀个字符串中被保存的位置开始,查找下⼀个标记。(如果字符串中不存在更多的标记,则返回 NULL 指针。)


以上就是本篇全部内容了。

你学会使用strtok函数了吗?

如有不足之处希望大家多多指出。

我是高耳机。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。