【发布时间】:2017-08-02 06:44:13
【问题描述】:
我想用 C 语言编写一个函数,将输入字符串截断为 32 个字符,但下面的代码给了我一个分段错误。谁能解释一下为什么会这样?
void foo (char *value){
if (strlen(value)>32) {
printf("%c\n", value[31]); // This works
value[31] = '\0'; // This seg faults
}
}
【问题讨论】:
-
向我们显示调用方代码。
-
这只是我编写的更大功能的一小部分。我没有发布函数的其余部分,它在将值字符串传递给它时起作用。
-
调用方代码就是:foo("hello");
-
更改字符串字面量是非法的。
-
"调用方代码就是:foo("hello");" -- 您应该在启用警告的情况下编译您的代码,并注意它们。您的编译器很可能会警告将
"hello"传递给需要(可修改)char*参数的函数无效。
标签: c string char segmentation-fault truncate