需要引用的头文件:
#include<stdio.h>
函数原型:
char *strtok(char *str, const char *delim);
功能:
来将字符串分割成一个个片段。当strtok()在参数str的字符串中发现参数delim中包含的分割字符时, 则会将该字符改为\0 字符,当连续出现多个时只替换第一个为\0。
参数:
str:要被分解成一组小字符串的字符串。
delim:包含分割符的 字符串
返回值:
成功:被分割出的字符串首地址
失败:NULL
注意事项:
在第一次调用时:strtok()必需给予参数str字符串, 往后的调用则将参数str设置成NULL。每次调用成功则返回指向被分割出片段的指针。
strtok函数的第一个参数不为NULL时,函数将找到str中第一个分割符,strtok函数将保存他在字符串中的位置。
strtok函数的第一个参数为NULL时,函数将在同一个字符串中被保存的位置开始,查找下一个分割符。
如果字符串中不存在更多的分割符,则返回NULL指针
代码实现1:
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[100] = "abc*edf*ghj*klm";
//在第一次调用时:strtok()必需给予参数str字符串
char *s = strtok(str,"*"); //分割符是*
while(s!=NULL)
{
printf("%s\n",s);
s = strtok(NULL,"*");
}
return 0;
}
程序运行结果:
代码实现:
#include <stdio.h>
#include <string.h>
{
char arr[] = "123@456.789"; //要被分解成一组小字符串的字符串。
char *p = "@."; //包含分割符的字符串
char *ret = NULL; //函数返回值
//在第一次调用时:strtok()必需给予参数arr字符串, 往后的调用则将参数str设置成NULL。
for(ret=strtok(arr,p);ret!=NULL;ret=strtok(NULL,p))
{
printf("%s\n",ret);
}
return 0;
}
程序运行结果: