c给空格字符赋值为空字符报段错误

代码如下:
#include < stdio.h >
#include < stdlib.h >
#include < string.h >
int main(void) {
// your code goes here
char *temp = "GET / HTTP/1,1";
char *url = strpbrk(temp," ");
printf("%s\n",url);
*url++ = '\0';
char *method = temp;
printf("%s\n",method);
return 0;
}
就这么简单的一段程序,在*url++='\0';上报段错误,我的linux不知道为什么神经又
不产生core文件,这个搞得我都懵逼了,不知道哪个前辈帮我解释下,谢谢了

 int main(void) {
    // your code goes here
    char str[20] = {'G','E','T',' ','/',' ','H','T','T','P','/','1',',','1'};
    *str = '\0'; // 不会段错误


    char *temp = "GET / HTTP/1,1";
    *temp = '\0'; //会段错误

数组保存在栈中,字符串保存在文字常量区,这部分是不可以修改的

*url++ = '\0';  你这句是什么意思?问题就出在这一句上

我傻逼了url是常量,不能赋值.....

谢谢各位了。。。我一看它报段错误,就没往这方想一直以为是空指针......

段错误(Segmentation Violations/Faults)原因在于非法访问内存。

 char *temp = "GET / HTTP/1,1";   //temp指向常量字符串,temp指向内存的内容不可以被修改。
 char *url = strpbrk(temp," ");  //可以对这块内存进行只读操作,如这行一样查找匹配字符
 *url++ = '\0';  //但尝试对这块内存进行写操作,就会报错。

用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!