在unix中strtok函数使用需注意

阅读 118

2023-01-20


 虽然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)

0 0 举报