以下代碼會在我的系統上產生段錯誤。我無法弄清楚爲什麼。任何幫助,將不勝感激。在c中修改char指針的值會產生段錯誤
#include<stdio.h>
int main() {
char * a = "abc";
*a = 'c';
printf("%c\n", *a);
return 0;
}
以下代碼會在我的系統上產生段錯誤。我無法弄清楚爲什麼。任何幫助,將不勝感激。在c中修改char指針的值會產生段錯誤
#include<stdio.h>
int main() {
char * a = "abc";
*a = 'c';
printf("%c\n", *a);
return 0;
}
試圖修改字符串文字會導致未定義的行爲。
有沒有什麼辦法在C修改字符串文字?必須有。 – 2011-03-04 04:49:27
@Smoke,不,沒有。您需要將文字複製到不在只讀內存中的數組中。 – 2011-03-04 04:50:39
謝謝,這是有道理的。 – 2011-03-04 04:53:19
標準中明確列出了§J.2這是不確定的行爲:
- 該程序試圖修改 字符串字面量(6.4.5)
如果你想複製它變成一個本地數組,這樣做:
char a[] = "abc";
a
是在棧上的數組,你可以自由地修改它。
我不相信它是最早的一個,但這裏有一個重複:http://stackoverflow.com/q/943191/2509 – dmckee 2011-03-04 07:15:38