首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于C的一个小疑点

2012-04-27 
关于C的一个小问题C/C++ codevoid main(){char ch[5]{0}scanf(%s,&ch)printf(%s\n,ch)printf(%d\

关于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[]保存吗

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

热点排行