strtok函数:
分解字符串为一组字符串。s为要分解的字符,sep为分隔符字符
(如果传入字符串,则传入的字符串中每个字符均为分割符)。
首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。
char *strtok(char *str, const char *sep);
例如:strtok(“abc,def,ghi”,","),最后可以分割成为abc def ghi.
1)第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或多个分割符分割的标记。
2)strtok函数找到str中的下一个标记,并用\0结尾,
返回一个指向这个标记的指针。
(注:strtok函数会改变被操作的字符,所以在使用strtok函数切分的字符串
一般都是临时拷贝的内容并且可以修改。)
3)strtok函数第一个参数不为NULL,函数将找到str中第一个标记,
strtok函数将保存它在字符串中的位置。
4)strtok函数第一个参数为NULL,函数在同一个字符串中被保存的位置开始,直接找下一个标记。
5)如果字符串中不存在更多的标记,则返回NULL 指针。
例题:
#include<stdio.h>
#include<Windows.h>
#include<string.h>
#pragma warning (disable:4996)
int main()
{
char str[] = "-This,a sample string.";
char *pch;
printf("Splitting string\"%s\"into tokens:\n", str);
pch = strtok(str, ",.-");//调用strsok函数
while (pch != NULL)
{
printf("%s\n", pch);
pch = strtok(NULL, ",.-");//第二次传NULL,就是pch上一次调用srtok函数遇
//到其中一个分隔符停留的位置
}
system("pause");
return 0;
}
int main()
{
char *p = "zhangpengwei@bitedu.tech";
const char*sep = "@.";
char arr[30];
char *str = NULL;
strcpy(arr, p);//将数据拷贝一份,处理arr数组的内容
for (str = strtok(arr, sep); str != NULL; str = strtok(NULL, sep))
{
printf("%s\n", str);
}
system("pause");
return 0;
}