0
点赞
收藏
分享

微信扫一扫

在unix中strtok函数使用需注意


 虽然strtok的函数原型是

  extern char *strtok(char *s, char *delim);
       
  用法:#include <string.h>
 
  功能:分解字符串为一组标记串。s为要分解的字符串,delim为分隔符字符串。
 
  说明:首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL。
        strtok在s中查找包含在delim中的字符并用NULL('/0')来替换,直到找遍整个字符串。
        返回指向下一个标记串。当没有标记串时则返回空字符NULL。

 

 

但是如果是下面的用法,则是错误的:

    char *s="zgbfg|zlkjksajflasf";

    char * p1=strtok(s,"|");

理由是,s字符串指针指向的是一个常数字符串。

而strtok是需要分割字符,并相应的把传入的s进行裁剪,但是由于s指向的是个常数字符串,所以会导致出错。

如果是下面的用法则不会出错。

char  s[256]="zgbfg|zlkjksajflasf";

char * p1=strtok(s,"|");

 

这是s是个字符串数组,第一句话会将字符串赋值给s。而s这个时候是个局部的字符串变量,可以被strtok修改。

举报

相关推荐

0 条评论