我正在使用strchr
在遇到=
的緩衝區中找到一個點。然後,我改變了這個性格與M
相同。我在嘗試執行此操作的行中遇到段錯誤。解引用字符指針會導致段錯誤
這是FULL代碼:
int main(void){
char *buffer = "Name=Tom"
char *pointer;
pointer = strchr(buffer,'=');
*pointer = 'M'; <--------- Segfault Occurs here
return (0);
}
我碰到下面的錯誤與段錯誤:
Process terminating with default action of signal 11 (SIGSEGV)
Bad permissions for mapperd region at addresss .....
請提供[最小完整和可覈查的示例](https://stackoverflow.com/help/MCVE)。你甚至沒有提供對這個問題至關重要的「緩衝區」的定義和內容。例如,如果'buffer'包含一個字符串常量或者不包含任何'='字符,那麼你會得到一個seg錯誤。但不可能用你提供的不完整的代碼來說。 – kaylum
也許找不到字符'=',並且strchr返回NULL –
因爲這個問題似乎被設計爲猜測遊戲,所以我懷疑你已經聲明瞭緩衝區:'char * buffer =「一個緩衝區= something',使它成爲一個常量字面值並且是隻讀的 –