读书人

关于C的一个小疑点

发布时间: 2012-04-27 11:57:44 作者: rapoo

关于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才结束读取.
当空间不够,就继续按指针增长的方向对齐,覆盖栈上的某些内容,
悲剧时刻发生
[解决办法]
探讨

引用:

那用户输入未知长度的字符串呢,难道用char ch[]保存吗

谢谢大家回答 不知道谁能回答这个问题

读书人网 >C语言

热点推荐