c - 打印字符串时出现意外错误

标签 c string pointers

为什么这段代码会产生错误?它不应该输出 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/

相关文章:

c - 函数调用后指针内容被删除,为什么?

java - 字符串匹配和整数匹配的时间复杂度

python计算字符串列表中的单词数

c++ - "myType& var = *(myType*) addrVar;"的逆运算是什么(c++)

c++ - 如何在 VSCode 中的 switch-case 语句中自动缩进?

c# - 如何在 C# 中将字符串转换为位

python - Tkinter - 当前鼠标指针在哪个小部件上?

CryptoAPI RSA Schannel 提供程序错误

c - 来自不同流的解析器

c - 我如何在 C 中找到可以免费使用的端口?