gpt4 book ai didi

c - 为什么通过指针传递正确的值会导致段错误?

转载 作者:行者123 更新时间:2023-11-30 16:19:30 25 4
gpt4 key购买 nike

我目前正在自学c,在练习指针使用过程中我遇到了这个问题-我试图用另一个指向的字符串中的子字符串替换指向的字符串(意思是,不是字符数组)中的子字符串。

char *str1="I like pizza!";
char *str2="love";

printf("%s\n", str1);

for (int i=2, j=0; j<4; i++, j++) {
*(str1+i)=*(str2+j);
}

printf("%s\n", str1);

结果应该是 - 我看到的方式 - 输出“我喜欢披萨”,然后输出“我喜欢披萨”。相反,我收到了段错误(错误 139)。我在网上寻找解决方案,但找不到问题所在。

(至少可以说,我知道 for 循环并不完美,但这不是这里的问题)。请帮帮我:)

最佳答案

因为这些是指向程序二进制文件中只读部分的指针。您无法更改内容。试试这个:

char str1[] = "I like pizza!";
char str2[] = "love"; // actually, this one can stay as a pointer as we're only reading

现在字符串已复制到堆栈中,程序将按预期运行。

关于c - 为什么通过指针传递正确的值会导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55611736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com