0

可能重复:
为什么在写入字符串时会出现分段错误?

我正在编写一个简单的字符串函数。问题是:我声明了一个 char 指针,然后一旦我尝试更新特定字符,程序就会崩溃。

我检查了一些以前写的字符串处理,我发现它们修改了特定的字符。但是当我尝试运行它们时,我遇到了同样的问题。

样本:

   stringprocess()
{
 char *s;
 s=" I am c programmer";
 s=" but, ..... um";

 *s='x'; //program crashes here...

 *p="abc";
 *s=*p; // this also cause crashing
........
}  

为什么会这样?

4

1 回答 1

4
s=" but, ..... um";

s指向字符串文字。尝试修改字符串文字会调用未定义的行为。通常,字符串文字存储在只读内存中,然后崩溃是这种尝试的直接后果。

如果要修改内容,应该使用char s[100](仅举例)或ed 指针。malloc

于 2012-11-14T21:09:10.723 回答