在getchar()函数中为什么回车符会储存在缓冲区里面

[复制链接]
查看11 | 回复3 | 2010-12-12 10:59:11 | 显示全部楼层 |阅读模式
比如说gets(s),输入123+回车,而输出时只输出123,此时的回车却在缓冲区中,下一个gets()接收回车。为什么回车会被储存在缓冲区中啊。既然回车是结束符,第一个gets 不能接收回车符,为什么第二个gets 能接收那个回车符啊。

回复

使用道具 举报

千问 | 2010-12-12 10:59:11 | 显示全部楼层
因为gets()函数默认的是以回车结尾,不然你怎么知道输到什么时候算完啊,所以回车是结尾符,接到了就说明到结尾了,所以回车并没有接受到gets()里面,需要再来一个gets()接收到了。
回复

使用道具 举报

千问 | 2010-12-12 10:59:11 | 显示全部楼层
我们按键盘上的回车 到程序中实际是两个指令 一个是回车 一个是换行 第一个gets取了123和他的结束标志回车 还剩下一个换行符在缓冲中 被接下来的gets读取。
回复

使用道具 举报

千问 | 2010-12-12 10:59:11 | 显示全部楼层
回车是种换行符,也属于从键盘上敲入的一种字符,getchar比较烦,一般用scanf没这么多顾虑
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行