Possible Duplicate:
Memory Allocation char* and char[]
为什么下面的程序在运行时会出现分段错误?
#include <stdio.h>
#include <string.h>
#include <malloc.h>
main()
{
char * str = "Have a. nice, day :)";
char * ptr;
ptr = strtok( str, " .,");
printf("%s",ptr);
}
但如果我使用char str[]=“Have a.nice,day:)”,它会给出输出。为什么即使strtok定义是char*strcpy(char*,const char*),我也会得到错误???~
最佳答案
strtok
修改参数,str
指向字符串文本,修改字符串文本会导致未定义的行为。实际上,不赞成使用字符串文字初始化非常量char*
。
当您编写str[]
时,str
将变为一个用字符串初始化的可变数组。