为什么用strtok时会有段错误呢?

来源:百度知道 编辑:UC知道 时间:2024/05/18 00:21:16
下面是我的程序,很简单,可是不知道为什么会有段错误,我是在Linux下gcc编译的:
#include <string.h>
#include <stdio.h>
main()
{
char *s="Golden Global View";
char *d=" ";
char *p;

p=strtok(s,d);
while(p)
{
printf("%s\n",s);
strtok(NULL,d);
}
return 0;
}
我知道了,原因是应该把 char *s="Golden Global View";改为 char s〔〕="Golden Global View";

strtok()这个函数的调用是分次数的。
第一次,是取分隔符前面的字符,内部用null替换。第二次,才是你这种用法,取之后的字符。
你放在循环里,这样破坏了它的次序,一次取前面,n次取后面