C语言字符串和字符数组问题?

char a[5]="HELLO"
属于字符串还是字符数组?
按理说这是字符串的定义方式,但已经没有位置加入'\0'了。
用puts输出时HELLO后面是乱码。
能通过编译.(编译器为 VC6 C++)

char a[5];是定义数组
"HELLO"是定义在常量区的字符串常量,是包含末尾的0的
程序在运行初始化阶段,系统会用常量区的6个字节初始化a数组,超出部分可能是被别的变量使用了,0被冲掉覆盖成其他数,因此printf输出至此未遇到0而继续输出直到遇到一个0为止,由于后面数据并非字符串,因此是乱码也不足为奇。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-12
例子
str[10]
int i;
for(i=0;i<10;i++) //循环输入
scanf("%c",&str[i]);
for(i=0;i<10;i++)
printf("%c",str[i]); //循环输出
单个单个看 就是把他当数组 一样的追问

可是char a[5]="hello"不是字符串的输入格式吗?

题目已修改,能否解答疑惑?