strtok函数

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 = "[email protected]";
 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;
}

猜你喜欢

转载自blog.csdn.net/unique_IT/article/details/94029122