fflush(stdin) 清除Scanf输入缓冲区
来源:互联网 发布:香香教你当网络歌手 编辑:程序博客网 时间:2024/05/29 02:57
scanf循环输入带来的问题:
#include<stdlib.h>#include<stdio.h>int main(int argc, char* argv[]){ int ival; float fval; double dval; while (1) { scanf("%d%f%lf", &ival, &fval, &dval); printf("%d %f %lf \n", ival, fval, dval); } system("pause"); return 0;}
运行结果:
123 4.56 7.89001 //第一次输入123 4.560000 7.890010 //第一次输出345 aaa 3.4456 //第二次输入345 4.560000 7.890010//循环输出345 4.560000 7.890010//循环输出345 4.560000 7.890010//循环输出345 4.560000 7.890010//循环输出345 4.560000 7.890010.....................
因为aaa的一次错误输入,Scanf不能正常完成循环输入,prinf一直循环输出,为保证循环正常进行每次输入前添加“fflush(stdin);”以清除scanf输入缓冲区:
#include<stdlib.h>#include<stdio.h>int main(int argc, char* argv[]){ int ival; float fval; double dval; while (1) { fflush(stdin); //清除缓存区 scanf("%d%f%lf", &ival, &fval, &dval); printf("%d %f %lf \n", ival, fval, dval); } system("pause"); return 0;}
运行结果:
123 4.56 7.89001 //第一次输入123 4.560000 7.890010//第一次输出345 aaa 3.4456 //第二次输入345 4.560000 7.890010//第二次输出111 2.22 3.33333 //第三次输入111 2.220000 3.333330//第三次输出。。。。。。。。。 //第四次输入111 2.220000 3.333330//第四次输入//循环恢复正常
直接将其添加至while循环中:
#include<stdlib.h>#include<stdio.h>int main(int argc, char* argv[]){ int ival; float fval; double dval; while (fflush(stdin), set = scanf("%d%f%lf", &ival, &fval, &dval) != EOF) { printf("%d %f %lf \n", ival, fval, dval); } system("pause"); return 0;}
0 0
- fflush(stdin) 清除Scanf输入缓冲区
- 关于fflush(stdin)的使用与scanf输入缓冲区的问题
- 关于fflush(stdin)的使用与scanf输入缓冲区的问题
- Fgets使用以前一定要清除键盘缓冲区 fflush(stdin)
- 内存缓冲区fflush(stdin)
- fflush(stdin)与清空输入缓冲区的方法
- 如何处理scanf()函数误输入造成程序死锁或出错(fflush(stdin))
- scanf最好与fflush(stdin)配合使用
- C 清空输入缓冲区,以及fflush(stdin)的使用误区和解决方法
- 你还在用fflush(stdin);清空输入缓冲区吗?
- C 清空输入缓冲区,以及fflush(stdin)的使用误区和解决方法
- C 清空输入缓冲区,以及fflush(stdin)的使用误区和解决方法
- scanf()中清除输入缓冲区的几种方法归纳
- 清空输入缓冲区fflush()
- scanf()导致死循环且fflush(stdin)无效详解
- 关于清除数据缓冲区fflush()
- fflush(stdin)
- fflush(stdin)
- LIO -SCSI target
- SQLite
- 字符串截取和替换
- 文章标题
- UVa 539 - The Settlers of Catan
- fflush(stdin) 清除Scanf输入缓冲区
- 更改Spinner内显示文字大小
- 小飞的电梯调度算法
- 临时变量提高效率
- 背包问题
- pragma comment的使用--- pragma预处理指令详解
- Qt Tcp传输
- Linux系列软件源码安装之三-----Supervisor
- AS开发AIDL程序(2)