2013-06-20 30 views
0

为什么会得到分割失败?字符数组分割错误

char *c = "dog"; 
    printf ("char is %c\n", s[0]);  
    s[0]='i';  
    printf ("s = %s\n", s); 

输出: char是d 分段故障

为什么它的错误在第二个字符串?我只是试图了解它...

回答

2

char *是一个常量字符串,其中的字符应该改变喜欢“s [0] ='我';” 将字符串改为char数组。

char s[] = "dog"; 
printf ("char is %c\n", s[0]); 
s[0]='i'; 
printf ("s = %s\n", s); 
+0

我知道,如果我这样做了,但它为什么会出现内部错误? – DDukesterman

+0

我发现这个来自Wiki,不太熟悉汇编的东西:)“当包含此代码的程序被编译时,字符串”hello world“被放置在程序可执行文件的标记为只读的部分;当加载,操作系统将其他字符串和常量数据放在只读内存段中。“ – Diracnote