首页 > 解决方案 > 我如何在C中复制到字符串文字

问题描述

char temp1[4] = "abc";
char *temp2 = "123";
strcpy(temp1,temp2);

如果我想将字符串文字复制到数组中,效果很好,但如果我以相反的方式进行操作,则会出现错误:

char temp1[4] = "abc";
char *temp2 = "123";
strcpy(temp2,temp1);

编译器的反馈是“分段错误”。

那么有什么区别呢?无论如何将字符串复制到字符串文字?

谢谢。

标签: c

解决方案


您需要了解这两行之间的细微差别

char temp1[4] = "abc";
char *temp2 = "123";

第一个创建一个 4 字符变量并将“abc\0”复制到它。
如果你愿意,你可以覆盖它。temp1[0] = 'x'例如,如果你愿意,你可以这样做。

第二个创建一个指向常量文字“123\0”的指针。
您不能覆盖它,它通常在内存中被声明为对操作系统只读。


推荐阅读