Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12838815
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类: PHP

2011-09-16 10:13:53

虽然strtok的函数原型是

  extern char *strtok(char *s, char *delim);
       
  用法:#include
 
  功能:分解字符串为一组标记串。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修改。

阅读(1821) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~