【发布时间】:2014-05-27 14:35:49
【问题描述】:
#include <stdio.h>
void main()
{
char a[8];
a[0] = 'h';
a[1]='e';
a[2]='l';
/*a[3]='l';
a[4]='o';*/
printf("%s", a);
}
当我运行这个程序时,它会打印出来:hel
但是为什么当我拥有它的时候是这样的
#include <stdio.h>
void main()
{
char a[8];
a[0] = 'h';
a[1]='e';
a[2]='l';
a[3]='l';
a[4]='o';
printf("%s", a);
}
打印出来:你好……
如果字符串是 3 个字符或更少,那么它会正确打印出字符串,但如果我有更多并且末尾没有 NULL 字符(表示字符串的结尾)它会打印出一些垃圾?
另外,这是在 C 中。
【问题讨论】:
-
没有元素为
'\0'的字符数组不是字符串。如果您在需要字符串的地方使用这样的数组,则会调用 Undefined Behaviour。
标签: c string initialization stack printf