我有那段代码:
#include<stdio.h>
int main()
{
char *str = "aaaaaaaa";
char *stt = "bbbbbbbb";
*str = *stt;
printf("%s\n", str);
return 0;
}
它给了我一个错误: 访问违规写入位置, 有人可以解释我为什么以及如何过来这个?
答案 0 :(得分:3)
你只是指定了第一个字符,你不应该这样做,因为字符串文字是不可变的。
只需使用str = stt;
指定指针即可。
const
限定类型,如
char const *str = "aaaaaaaa";
答案 1 :(得分:0)
"aaaaaaaa"
之类的字符串文字是只读的,您的代码正在尝试覆盖str
指向的字符串的第一个字符。如果你想做什么,你需要做这样的事情:
char str[9];
char *stt = "bbbbbbbb";
strcpy(str, "aaaaaaaa");
*str = *stt;
printf("%s\n", str); // prints: baaaaaaa
当然,你真正想要的更有可能是:
str = stt;
printf("%s\n", str); // prints: bbbbbbbb
答案 2 :(得分:0)
字符串文字是不可修改的,即您无法修改字符串文字。这是因为它存储在只读部分。
试试这个
char str[] = "aaaaaaaa";
char stt[] = "bbbbbbbb";
char *pstr = str;
char *pstt = stt;
pstr = pstt;
printf("%s\n", ptr);