定义的字符数组小于初始化字符串

标签 c string

#include<stdio.h>
void main()
{
char str[4] ="HELLO";
printf("%s",str);
}

这里到底发生了什么?

输出是: 见鬼?

最佳答案

您不能将 5 个值分配给 4 大小的数组,当您输入 Hello 时,它会被解释为 {'h', 'e', 'l', 'l' , 'o'},所以你至少需要 5 个大小的数组。

考虑到C还需要最后一个字符'/0',我建议你将它作为6大小的数组

关于定义的字符数组小于初始化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57986800/

相关文章:

c - ncurses 是在 linux 的 C 程序中实现命令历史记录的好选择吗

regex - 如果不为空,则在左括号和右括号之间匹配?

string - 组合变音符号出现在代码点之后的顺序是否重要?

php - mysql字符串搜索算法查询帮助

c++ - 我应该下载哪个 Clang 编译器?

c - devm_kzalloc 的问题

php - 获取所有非重复的字符串组合(无论顺序如何)

c# - 如何将长毫秒(纳秒)部分的字符串解析为 DateTime?

不使用指针的C编程队列

c - struct node * arr[] 和 (struct node)* arr[] 之间有什么区别?