在C语言中,strtok()函数是一个非常有用的字符串解析函数。它可以将字符串分成一个个子字符串,并且可以使用特定的标记将字符串分开。下面就来详细介绍一下这个函数。
1. strtok()函数的介绍
strtok()函数是C语言中的库函数,定义在header文件<string.h>
中,用于将字符串分成一系列零散的子字符串。函数原型如下:
char *strtok(char *str, const char *delim);
strtok()函数将参数str
的字符串分割成一系列子字符串,其分隔符为参数delim
字符串中的字符。在第一次调用时,参数str
指向要分割的字符串,之后每次调用时,参数str
都应该传递NULL
。
1.1 参数说明
str:要进行操作的字符串。
delim:指定的分隔符字符串。
函数返回一个指向下一个子字符串的指针。如果没有可用的被分割的子字符串,返回NULL
。
1.2 例子说明
下面的例子将会分解str
指向的字符串“This is a string!
”:
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] = "This is a string!";
char *token;
// 获取第一个子字符串
token = strtok(str, " ");
// 循环遍历所有子字符串
while( token != NULL ) {
printf( "%s\n", token );
// 获取下一个子字符串
token = strtok(NULL, " ");
}
return 0;
}
程序将输出以下内容:
This
is
a
string!
2. strtok()函数的使用方法
2.1 使用方法
使用strtok()
函数时,需要在每次循环中调用该函数,直到返回NULL
为止。循环中,调用该函数时,第一次调用的第一个参数是待分割的字符串,第二个参数是分隔符。第二次调用该函数时,第一个参数应该传递NULL
,以便接着上次的调用继续处理。如果在中途需要停止分割,可以将第一个参数传递为NULL
,这样strtok()
函数就会停止分割。
2.2 注意事项
在使用strtok()
函数时,需要注意以下几点:
使用strtok()
函数后,原字符串将会被修改。
每个分隔符只能分割出一个子字符串。
如果一个字符串中没有分隔符,strtok()
函数只会返回原字符串。
如果在一个字符串中有多个连续的分隔符,strtok()
函数会返回一个空字符串。
3. 示例代码
下面是一个使用strtok()
函数将读入的一行字符串进行分割的例子代码:
#include <stdio.h>
#include <string.h>
int main()
{
char input[100];
char *token;
printf("请输入一行字符:");
fgets(input, 100, stdin);
// 用空格和换行符作为分隔符
token = strtok(input, " \n");
while (token != NULL)
{
printf("%s\n", token);
// 继续下一个分割操作
token = strtok(NULL, " \n");
}
return 0;
}
该程序会让用户输入一行字符,然后将这些字符分割并输出。
4. 总结
strtok()函数是C语言中一个非常常用的字符串解析函数,能够将字符串分成一系列子字符串。在使用该函数时,需要注意其一些细节问题,才能实现人所熟知的功能。