在每次scanf 或getchar后加上一个fflush来清理输入缓冲区是不是一个好的代码习惯?
【在每次scanf 或getchar后加上一个fflush来清理输入缓冲区是不是一个好的代码习惯?】 fflush只是用于立刻输出缓冲区内容的,它并不会抛弃缓冲区内容,所以用fflush来清理输入缓冲区本身是错误的。一部分库支持用fflush(stdin)来清理输入缓冲区,不过这个并不是标准。
考虑这样的情况:char c1, c2;printf("Char 1: ");scanf("%c", \u0026amp;c1);printf("Char 2: ");c2 = getchar();printf("Char 1 = %c, Char 2 = %c", c1 , c2);输入第一个字符并敲下回车之后,字符被写入c1,回车字符(\u0026#39;\\u0026#39;)会被写入输入缓冲区之后被getchar()接收。也就是说上面的代码里,getchar()这句话是不会等待用户输入第二个字符的。
一种比较通用的方案是:while((c = getchar()) != \u0026#39;\\u0026#39; \u0026amp;\u0026amp; c != EOF)\t\t/* discard */ ;
■网友
你要做的是使自己的脑子清楚地知道缓冲区里会有啥、该怎么处理,而不是用这个ub操作来把缓冲区的屁屁擦干净。
■网友
如果你要实现频繁读写,那还是不要每次都刷新吧。对机械硬盘伤害大
■网友
不是
■网友
这种情况可以通用写法
while (getchar() != \u0026#39;\\u0026#39;)
continue;
■网友
没用过fflush
(P.S.回车相当于强制输出)
推荐阅读
- 有哪个瞬间让你觉得自己是人类的希望
- 每次去医院复查寸步不离!女儿:父亲无措得像个孩子
- CAD每次打开新文件都提示可执行文件超出指定的受信任的位置,以前没事,是啥原因,我应该咋办
- 咋克服不敢去面试
- 宣云|宣云频繁晒自拍,居家形象越来越乖巧,每次都获老公潘玮柏点赞
- 为啥手机流量每次都使用那么快呢怎么样可以节省流量呢求大师支招
- 怎样看待多数知乎用户用白人的照片做头像
- 趣头条|【15周年】爱上一部颜智双全的车-魏派VV5
- |江苏八旬奶奶陪老伴做血透500多次 每次都吹口琴哄他入睡
- C语言中scanf的返回值问题。status=scanf(\"%d\
