免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2438 | 回复: 4
打印 上一主题 下一主题

关于strtok函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-02 16:08 |只看该作者 |倒序浏览
strtok函数的原型是char *strtok(char *str, const char *delim);
可是在使用的时候如果第一个参数是指针的形式,比如 char *s="abd,d",那运行的时候就会出错,换成数组的形式后就没有问题,比如char s[]="abd,d";
为什么会出现这种情况??下面是一个例子代码。

  1.   1 #include <string.h>
  2.   2 #include <stdio.h>
  3.   3
  4.   4 int main(void)
  5.   5 {
  6.   6     char s[]="Golden,Global,View";//若这样定义char *s="Golden,Global,View",运行就会报错,Segmentation fault
  7.   7     char *p;
  8.   8
  9.   9     p=strtok(s,",");
  10. 10     while(p){
  11. 11         printf("%s\n",p);
  12. 12         p=strtok(NULL,",");
  13. 13     }
  14. 14     return 0;
  15. 15 }
复制代码

论坛徽章:
0
2 [报告]
发表于 2009-04-02 16:10 |只看该作者
char *s="Golden,Global,View"

"Golden,Global,View" 是常量,值不能改的

论坛徽章:
0
3 [报告]
发表于 2009-04-02 16:25 |只看该作者
谢谢楼上了,知道了。

论坛徽章:
0
4 [报告]
发表于 2009-04-02 17:03 |只看该作者

回复 #1 szjrabbit 的帖子

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

论坛徽章:
0
5 [报告]
发表于 2009-04-02 17:05 |只看该作者
按照man里面抄代码是最保险的方法之一
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP