c将字符串指针指定给其他字符串指针

时间:2013-12-08 16:23:18

标签: c string pointers

我有那段代码:

#include<stdio.h>

int main()
{
    char *str = "aaaaaaaa";
    char *stt = "bbbbbbbb";
    *str = *stt;
    printf("%s\n", str);

return 0;
}

它给了我一个错误: 访问违规写入位置, 有人可以解释我为什么以及如何过来这个?

3 个答案:

答案 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);