关于字符数组越界仍能正确存储并显示的疑问
#include <stdio.h>void main()
{
char s[5];
int i;
scanf("%s",s);/*输入abcdef,明显越界*/
printf("%s\n",s);
/*结果仍正常显示abcdef*/
for(i=0;i<5;i++)
printf("%c",s[i]);
/*结果正常显示abcde*/
}
请问定义char s[5]后,系统开辟了5个字节的存储空间,为何越界仍能正确存储并显示?并且还能正确在末尾自动加'\0'?