scanf()、getchar()、gets()比较

相同点:

调用scanf()getchar()gets()这三个函数时,若缓冲区中残留有可令函数结束的字符,则函数碰到时会按自己结束方式结束。没有可令函数结束的字符,则函数会等待键盘输入。键盘键入的数据都会先放入输入缓冲区中,然后函数从缓冲区中读数据。

 

不同点:

读字符串:

scanf()函数:从缓冲区中拿字符,碰到【空格、回车、Tab键】则将其从缓冲区中扔掉。遇到第一个不为【空格、回车、Tab键】的字符后开始读取,再次碰到【空格、回车、Tab键】时结束。(最后碰到的这个【空格、回车、Tab键】仍然留在缓冲区中)。

gets()函数:从缓冲区当前的第一个字符起(包括【空格、回车、Tab键】)开始读取,碰到【回车键】时结束。(最后碰到的这个【回车键】已经不再缓冲区中了,gets()函数将其读入,并用null替换)

读字符:

scanf()函数/getchar()函数:读取当前缓冲区的第一个字符(包括【空格、回车、Tab键】),以【回车键】结束。(最后的【回车键】仍然在缓冲区中)

 

清空缓冲区:C语言里提供了函数清空缓冲区,只要在读数据之前先清空缓冲区就没问题了!
      
这个函数是fflush(stdin)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值