我正在使用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',使它成为一个常量字面值并且是只读的 –