输入缓冲区数据残留问题

有时当编译器执行完后,结果界面不会停在,而是一闪而没,看不到执行结果。在结尾加上getchar同样一闪而没。

这是因为程序读入数据是从读入缓冲区读取的,当读入缓冲区有数据残留时就会直接从缓冲区读入数据,不会等待输入,就会出现上述结果。

 

解决办法有两种:

1、清空缓冲区数据。利用fflush(stdin)函数,这是标准做法。

    在Linux平台下可用setbuf(stdin,NULL);

2、scanf("%*[^\n]%*c");这是利用扫描集将缓冲区的数据全部取出以达到清空缓冲区数据。

  (解释:%*[^\n]是逐个读取'\n'字符之前的其他字符,%后面的*是将这些读取的字符丢掉,当遇到'\n'时停止读取操作,此时缓冲区上有一个'\n'残留,%*c是读取并丢掉这个遗留的换行符。)

转载于:https://www.cnblogs.com/flash610/archive/2013/05/15/3079127.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值