gpt4 book ai didi

c - 使用指针在c中处理字符串

转载 作者:太空宇宙 更新时间:2023-11-04 01:31:35 25 4
gpt4 key购买 nike

我编写了以下程序(最好的教科书之一给出了它作为示例)。当我在我的 Ubuntu 机器上或在 http://www.compileonline.com/compile_c_online.php 编译它时,我得到“段错误”

问题出在 while( *p++ = *str2++)

我觉得这是一个完全合法的程序。请专家解释一下这个错误。

PS:我在论坛上搜索了一下,没有找到有说服力的答案。甚至有人答错了,说 *(unary) 比++ (postfix) 有更高的优先级。

#include <stdio.h>
#include <string.h>

int main()
{
char *str1= "Overflow";
char *str2= "Stack";

char *p = str1;
while(*p)
++p;

while( *p++ = *str2++)
;

printf("%s",str1);

return 0;
}

谢谢

最佳答案

str1str2 指向字符串文字。你不能修改那些。即使可以,也没有为字符串分配足够的内存来保存您要追加的字符。相反,从字符串文字初始化一个足够大的 char 数组:

char str1[14] = "Overflow";

关于c - 使用指针在c中处理字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21627526/

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