增加字符串的字符值

时间:2013-01-15 02:24:48

标签: c

  

可能重复:
  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);
}

2 个答案:

答案 0 :(得分:2)

这个char *str = "andrew";做的是创建一个指向字符串的指针,该字符串可能位于.text(可执行代码所在的位置)并尝试修改它是未定义的行为。

为此更改:

char str[] = "andrew";

它将在堆栈分配的缓冲区中创建一个可以安全修改的字符串的副本。

答案 1 :(得分:0)

此:

char *str = "andrew";

表示str指向常量字符串文字。如果您尝试更改它,您将得到未定义的行为。

如果要执行字符串操作,请定义字符数组。