【发布时间】:2012-09-14 05:40:29
【问题描述】:
可能重复:
Why do I get a segmentation fault when writing to a string?
我想替换字符串中的一个单词。这是代码
char text[] = "This is a list of lists";
char *find = "list";
char* pos = NULL;
pos = strstr(text,find);
strncpy(pos,"test",4)
这很好用,但是
char *text = "This is a list of lists";
char *find = "list";
char* pos = NULL;
pos = strstr(text,find);
strncpy(pos,"test",4)
这会导致分段错误。
在第一个示例中,“文本”是一个数组,数据只是复制到该位置。在第二个“文本”是一个指针。什么问题?
【问题讨论】:
-
啊哈!您正在修改字符串文字。前往掩护!等我找到骗子。
-
字符串文字仍然在我的记忆中。我应该无法更改它吗?
-
阅读我链接的欺骗。它有一个非常清楚的解释。基本上,并非所有内存都是可修改的。
-
啊,是的,每天的“为什么我的程序在我修改字符串文字时会崩溃”的问题。今天比昨天来得早。