C语言 为什么通过指针传递正确的值会导致段错误



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

char *str1="I like pizza!";
char *str2="love";
    printf("%sn", str1);
for (int i=2, j=0; j<4; i++, j++) { 
    *(str1+i)=*(str2+j); 
}
    printf("%sn", str1);

结果应该是 - 我看到它的方式 - 输出"我喜欢披萨",然后是"我爱披萨"的输出。相反,我得到一个段错误(错误 139(。我在网上搜索解决方案,但找不到问题所在。

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

现在,字符串被复制到堆栈中,程序按预期工作。

str1str2 指向的字符串是只读的

尝试更改其内容的行为未定义

改用 char str1[] = "I like pizza!"; &c.,这会将只读字符串复制到 str1[] ,然后您可以自由修改。

相关内容

  • 没有找到相关文章

最新更新