日升月落

日升月落
日升月落的技术博客
  1. 首页
  2. 程序员
  3. 正文

关于 fflush(stdin)

2010年12月9日 2399点热度 0人点赞 0条评论

fflush(stdin)这个方法在GCC下不可用。(在VC6.0下可以)
以下是 C99 对 fflush 函数的定义:
int fflush(FILE *stream);
如果stream指向输出流或者更新流(update stream),并且这个更新流最近执行的操作不是输入,那么fflush函数将把任何未被写入的数据写入stream指向的文件(如标准输出文件stdout)。否则,fflush函数的行为是不确定的。
fflush(NULL)清空所有输出流和上面提到的更新流。如果发生写错误,fflush函数会给那些流打上错误标记,并且返回EOF,否则返回0。
由此可知,如果 stream 指向输入流(如 stdin),那么 fflush 函数的行为是不确定的。故而使用fflush(stdin) 是不正确的,至少是移植性不好的。
可采用如下方法:
/* 此函数可以和scanf函数一起使用,但使用%c输入时要注意,即此函数只能用于缓冲区非空的情况 */

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include
 
void flush()
{
    char c;
    while ((c = getchar()) != '\n' && c != EOF);
}
 
int main()
{
    int a, b, c; /* 计算a+b */
    while (scanf("%d, %d", &a, &b) != 2) flush();
    c = a + b;
    printf("%d+%d=%d",a,b,c);
}
标签: 暂无
最后更新:2018年3月9日

木火唳唳

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

木火唳唳

这个人很懒,什么都没留下

分类
  • 程序员 / 10篇
  • 随笔 / 16篇
  • 大学 / 11篇
  • 高中语文 / 20篇
  • 未分类 / 3篇
最新 热点 随机
最新 热点 随机
如何修复 Windows10 右键菜单弹出延迟 如何恢复 Windows 10 的默认图片查看方式为 Windows 图片查看器 如何在 Chrome 中导入和导出密码 取消 IDEA 的双击 Shift 功能 闲暇随笔 一些注意
诗一首 清华 Freescale 9S12XS128 开发板管脚分布图 诗词鉴赏 观月 文言句式:介宾短语后置 文言句式:省略句

COPYRIGHT © 2021 yinrenjie.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备2022004353号-1

豫公网安备 41019702002534号