当前位置:   article > 正文

strtok函数的使用_strtok(null, delimiter);

strtok(null, delimiter);

函数形式:

    #include <string.h>

    char *strtok(char *str, const char *delim);

作用:

    根据某个定界附,将字符串分解成多个部分。

方法:

    第一次调用该函数时,输入为str,后面再调用该函数时,str为NULL。当分解完成后,函数返回NULL。

一个分解字符串,并记录分解次数的例子:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main(void)
  5. {
  6. char *str = "a b c de"; //元素值不可变
  7. char *t; //定义一新指针,可以改变其中元素的值
  8. char *delimiter = " "; //定界符
  9. int i = 0;
  10. int numtoken; //存储分割元素的个数
  11. char **p; //存储分割的字符串
  12. t = malloc(strlen(str) + 1); //由于strlen不计算/0,所以所求字符串长度需要加一
  13. printf("len_of_str:%ld\n", strlen(str));
  14. strcpy(t, str);
  15. //计数
  16. if (strtok(t, delimiter) != NULL)
  17. for(numtoken = 1; strtok(NULL, delimiter) != NULL; numtoken++ );
  18. printf("numtoken:%d\n", numtoken);
  19. //为二重指针分配空间
  20. p = malloc(sizeof(char *) * numtoken + 1);
  21. strcpy(t, str);
  22. printf("t: %s\n", t);
  23. //赋值
  24. *p = strtok(t, delimiter);
  25. for(i = 1; i < numtoken; i ++ )
  26. {
  27. p[i] = strtok(NULL, delimiter);
  28. }
  29. //打印
  30. for(i = 0; i < numtoken; i ++ )
  31. {
  32. printf("%d str:%s\n", i, p[i]);
  33. }
  34. }

函数输出:

  1. len_of_str:8
  2. t: a b c de
  3. numtoken:4
  4. 0 str:a
  5. 1 str:b
  6. 2 str:c
  7. 3 str:de

总结:

1,第一次调用strtok函数时,str为待处理的字符串首地址,再次调用时,str为NULL;

2,以strtok的返回值是否为NULL来判断,字符串变量是否还可以继续分割;

2,初始化给字符串串的时候,字符串中的内容不可以更改;以数组的形式初始化字符串变量,或者采用strcpy(des, sour)的办法,可以使字符串中的变量更改。

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/855086
推荐阅读
相关标签
  

闽ICP备14008679号