2012-11-14 93 views
0

可能重复:
Why do I get a segmentation fault when writing to a string?字符串函数

我正在写一个简单的字符串函数。问题是:我声明了一个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 
........ 
} 

为什么会出现这种情况?

+1

您还没有定义'p' – TheZ

回答

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

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

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

+0

谢谢,这很有帮助。 – user1824971