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将变为一个用字符串初始化的可变数组。

07-28 02:54
查看更多