2013-06-20 31 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