可能重复:
Why do I get a segmentation fault when writing to a string?
这是一个小函数,正在测试一些如此写的东西。在这里我尝试增加字符串文字的字符值,当我尝试这样做时,我有一个分段错误。你能告诉我这里做错了吗
#include <stdio.h>
int input_string(char *str)
{
printf("%s\n", str);
printf("%c\n", *str);
printf("%c\n", (*str)++); // I get a segmentation fault here, cant i increment the value like this ?
}
void main()
{
char *str = "andrew";
input_string(str);
}
答案 0 :(得分:2)
这个char *str = "andrew";
做的是创建一个指向字符串的指针,该字符串可能位于.text(可执行代码所在的位置)并尝试修改它是未定义的行为。
为此更改:
char str[] = "andrew";
它将在堆栈分配的缓冲区中创建一个可以安全修改的字符串的副本。
答案 1 :(得分:0)
此:
char *str = "andrew";
表示str指向常量字符串文字。如果您尝试更改它,您将得到未定义的行为。
如果要执行字符串操作,请定义字符数组。