c语言 Mingw 中 strtok的一个问题
时间:2010-10-03 来源:Safrain
int main() { char *s = "Golden Global View"; const char *d = " "; char *p; p = strtok(s, d); while (p) { printf("%s\n", p); p=strtok(NULL, d); } getchar(); return 0; }
使用Mingw+Eclipse写了上面一段c代码 可是运行到第一个strtok的时候,程序崩溃了,时好时坏。
查了半天发现了问题:
char *s = "Golden Global View";
s是“不可写”的,需要复制一下,变成“可写”的
如下
int main() { char *s; s = malloc(30); strcpy(s, "Golden Global View"); const char *d = " "; char *p; p = strtok(s, d); while (p) { printf("%s\n", p); p = strtok(NULL, d); } return 0; }上面的程序中s被复制了,strtok就不会报错了。
strdup能达成同样的目的。
相关阅读 更多 +