https://bbs.csdn.net/topics/390692289
- 收藏帖子
- 回复
结帖率 38.46%
#include <string.h>
#include <stdio.h>
main()
{
char *s="Golden Global View";
char *d=" ";
char *p;
p=strtok(s,d);
return 0;
}
上面这个简单的程序,运行到strtok就crash, 难道strtok的用法有问题吗? 谢过~
问题点数:20分
0 2009-11-11 14:23:13 回复次数7
只看楼主 ・ 引用 ・ 举报 ・ 楼主
char * 改为char xx[]
0 2009-11-11 14:24:57
只看TA ・ 引用 ・ 举报 ・ #1 得分:4
char s[]="Golden Global View";
就可以了
因为strtok在s中查找包含在delim中的字符并用NULL('')来替换,直到找遍整个字符串。
也就是说strtok会改变原串
0 2009-11-11 14:27:11
只看TA ・ 引用 ・ 举报 ・ #2 得分:6
明白了,原来s不能是字符串常量, 似乎man上也没有明确说明啊,并且所带的例子也是错的.
0 2009-11-11 14:28:08
只看TA ・ 引用 ・ 举报 ・ #3 得分:0
s, d 指向字符串常量,而编译器一般不允许修改字符串常量。
0 2009-11-11 14:29:20
只看TA ・ 引用 ・ 举报 ・ #4 得分:6
引用 3 楼 arraytang 的回复:
明白了,原来s不能是字符串常量, 似乎man上也没有明确说明啊,并且所带的例子也是错的.
呵呵。
0 2009-11-11 14:29:42
只看TA ・ 引用 ・ 举报 ・ #5 得分:2
thank you all~
0 2009-11-11 14:38:38
只看TA ・ 引用 ・ 举报 ・ #6 得分:0
对字符串常量的修改问题在GCC手册里做了说明。
0 2009-11-11 15:17:58
只看TA ・ 引用 ・ 举报 ・ #7 得分:2