c - 带有指向字符数组指针的 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;
}

最佳答案

错误不是堆栈溢出,而是修改字符串字面量。

str 是一个指向字符串字面量"Hello world" 的指针,修改字符串字面量是未定义的行为。

str 更改为:

char str[100] = "Hello world";

关于c - 带有指向字符数组指针的 strcpy 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25971223/

相关文章:

c - 在 C99 中指向数组开始之前的元素

c - 从控制台中删除新行字符

c - 尝试交换用户输入数组中的多个值

c++ - 链表 - 模板 - 指针

java - Gson stackoverflow Gson.fromJson

recursion - 为什么在 Racket 中是 "there is no such thing as stack overflow"?

c - 函数返回错误值

c - 使用 LD_PRELOAD 替换 Linux 系统调用时出现问题

java - 通过搜索堆转储以编程方式查找正在运行的 Java 应用程序的值等的 VisualVM 等软件的替代方案?

arrays - 为什么堆栈溢出取决于Go中如何访问数组?