我完全是C的新手,我正在編寫一個反轉字符串的函數。我的代碼如下所示:C代碼中的分割錯誤
char *str = "abcdef";
char *ptr;
for(ptr = str; *ptr ; ptr++);
for(; str < --ptr; str++)
{
char c = *str;
*str = *ptr;
*ptr = c;
}
我得到了分段錯誤錯誤。我沒有看到這個錯誤(也許這太明顯了)。任何提示?
乾杯
我完全是C的新手,我正在編寫一個反轉字符串的函數。我的代碼如下所示:C代碼中的分割錯誤
char *str = "abcdef";
char *ptr;
for(ptr = str; *ptr ; ptr++);
for(; str < --ptr; str++)
{
char c = *str;
*str = *ptr;
*ptr = c;
}
我得到了分段錯誤錯誤。我沒有看到這個錯誤(也許這太明顯了)。任何提示?
乾杯
變化
char *str = "abcdef";
到
char str[] = "abcdef";
第str
指向一個字符串字面量和字符串是不是在C修改,
所以內部我可以更改一個字符串,如果它被聲明爲一個字符數組而不是字符串文字? – slashburn
您不允許修改字符串文字。在第二種情況下,你有一個用字符串文字內容初始化的數組。您可以修改此數組,因爲它不是字符串文字。 – ouah
@ouah如果char * str被聲明爲char str [],它會被存儲在程序的數據部分中嗎? – John