关于strtok函数,编译没错,可是无法运行
#include "stdio.h"
#include "string.h"
#include "malloc.h"
int main()
{
char *str = "HELLO,WORLD,HELLO";
char *sep = ",";
char *p = (char *)malloc(sizeof(char) * 100);
for (p = strtok(str, sep); p != NULL; p = strtok(NULL, sep))
printf("%s\n", p);
return 0;
}
一个很简单的实验strtok函数的程序,可以编译,也没报错,可是在执行到for的时候,就会出现堆栈跟踪可用某某的信号(编译器为codelite),内存出问题,不解,感觉没错啊,求各位大大帮忙看看
ps;不会贴那种可以直接赋值的代码,将就下,还有请问怎么贴那种代码呢
[解决办法]
char str[] = "HELLO,WORLD,HELLO";
[解决办法]
一般情况下使用如下方式定义的字符串会默认为const,不允许进行修改。
char *p="xxxxx";//常量,不允许修改
[解决办法]
char *str = "HELLO,WORLD,HELLO"; 这样定义字符串是存放在静态存储区的,属性是只读的。所以用strtok进行分割的时候是不会成功的。
int main(){char str[] = "HELLO,WORLD,HELLO";char *sep = ",";char *p = (char *)malloc(sizeof(char) * 100);for (p = strtok(str, sep); p != NULL; p = strtok(NULL, sep))printf("%s\n", p);return 0;}