c语言初学,字符串的字符数组问题

main(){staticcharsh[5];printf("请输入字符串:");scanf("%s",sh);}这个字符串长度定义了是5,但是为什么输入的时候可以输入超... main()
{
static char sh[5];
printf("请输入字符串:");
scanf("%s",sh);
}
这个字符串长度定义了是5,但是为什么输入的时候可以输入超出5个长度的字符呢
展开
 我来答
胡晓锋051
2012-03-02
知道答主
回答量:20
采纳率:0%
帮助的人:14万
展开全部
其实输入的时候你能够输入很多,但是后面多的你没有存入数组里面
量子002
2012-03-02 · TA获得超过4212个赞
知道大有可为答主
回答量:4082
采纳率:66%
帮助的人:964万
展开全部
main()
{
static char sh[5];
static char AA[5];
printf("请输入字符串:");
scanf("%s",sh);
}
如果sh后面还有别的变量定义时,当输入字符串超过5,或被写入到AA中,将AA中的信息覆盖。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱上夜色深沉
2012-03-02 · TA获得超过459个赞
知道小有建树答主
回答量:377
采纳率:100%
帮助的人:352万
展开全部
那是因为,在你没有输入回车前,你输入的字符串都是放在缓冲流中的,只有当你输入了回车,那么系统才会吧字符串从缓冲流中取出来,然后放到数组中,所以你可以输入长度大于所接收的字符串数组长度的字符串,但系统把字符串从缓冲流中取出来是按照先后顺序取出来的,当字符串放满时,没有放完的缓冲流中的字符还是在缓冲流中,打个比方就是用一桶水接自来水。桶接满了水,但是自来水管 中还是有水的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
0动感蚂蚁0
2012-03-02 · TA获得超过391个赞
知道小有建树答主
回答量:177
采纳率:100%
帮助的人:130万
展开全部
输入没有问题,遇到回车结束,但是在内存中只为这个数组分配了五个单位,其他的随机存储
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式