可能是重复问题:
为什么在写入字符串时会导致分段错误?
我在我的C代码中遇到了一个奇怪的问题。我正在尝试使用strtok函数来拆分字符串,但我得到了访问冲突异常。这是我的代码:
char *token;
char *line = "LINE TO BE SEPARATED";
char *search = " ";
token = strtok(line, search); <-- this code causes crash
然而,如果我将
char *line
改为char line[]
,一切都按预期工作,我不会得到任何错误。有人能解释一下为什么使用strtok时会出现这种(对我来说很奇怪的)行为吗?我以为char*和char[]是相同且完全相同的类型。更新:我正在使用MSVC 2012编译器。
char*
(在 C++11 中不再允许)。提高警告级别。 - R. Martinho Fernandes