为什么这段代码会产生错误?它不应该输出 zbcde 吗?
int main()
{
char *p="abcde";
*p='z';
printf("%s\n",p);
return 0;
}
最佳答案
您正在尝试修改字符串文字;这是未定义的行为。
进一步解释:“abcde”不是 char *
而是 const char *
。您应该执行以下解决方案之一:
char p[] = "abcde";
或
char *p = strdup("abcde");
(在后一种情况下,不要忘记 free() p!)
关于c - 打印字符串时出现意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11958425/