关于C的一个小问题
- C/C++ code
void main(){ char ch[5]={0}; scanf("%s",&ch); printf("%s\n",ch); printf("%d\n",sizeof(ch));}输入12345678
数组空间不足,却能执行,我不知道C是怎么处理这些字符的,大家解释解释
12345678
12345678
5
Press any key to continue
输入123456789提示exe停止工作
[解决办法]
未定义行为.
导致不可知的结果.
scanf的时候是碰到SPACE才结束读取.
当空间不够,就继续按指针增长的方向对齐,覆盖栈上的某些内容,
悲剧时刻发生
[解决办法]