带字符数组指针的strcpy函数

带字符数组指针的strcpy函数,c,pointers,stack-overflow,strcpy,C,Pointers,Stack Overflow,Strcpy,在下面的代码中,结果是堆栈溢出。虽然两个字符串都有空字符,但是strcpy循环应该终止,因为源字符串有空字符。为什么会发生堆栈溢出 #include <stdio.h> #include<strings.h> int main(void) { char *str="Hello world"; char *str1="Good morning"; strcpy(str,str1); printf("%s",str); return 0

在下面的代码中,结果是堆栈溢出。虽然两个字符串都有空字符,但是strcpy循环应该终止,因为源字符串有空字符。为什么会发生堆栈溢出

#include <stdio.h>
#include<strings.h>
int main(void) {
    char *str="Hello world";
    char *str1="Good morning";
    strcpy(str,str1);
    printf("%s",str);
    return 0;
}
#包括
#包括
内部主(空){
char*str=“你好,世界”;
char*str1=“早上好”;
strcpy(str,str1);
printf(“%s”,str);
返回0;
}

错误不是堆栈溢出,而是修改字符串文字

str
是指向字符串文本的指针
“Hello world”
,修改字符串文本是未定义的行为

str
更改为:

char str[100] = "Hello world";

错误不是堆栈溢出,而是修改字符串文字

str
是指向字符串文本的指针
“Hello world”
,修改字符串文本是未定义的行为

str
更改为:

char str[100] = "Hello world";

表示char*str默认为const char*str??如果是这样,为什么它不会发生在除char以外的数据类型数组中?@Siya Read表示默认情况下char*str是const char*str??如果是这样,为什么它不会发生在除char以外的数据类型数组中?@Siya Read