fflush函数

fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准]。fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上。

printf("。。。。。。。。。。。");后面加fflush(stdout);可提高打印效率。

但是,有一个问题,频繁的fflush会降低磁盘的使用寿命。



也可以采用以下的方式清空缓冲区:

/* C 版本 */
#i nclude <stdio.h>
 
int main( void )
{
    int i, c;
    for (;;) {
        fputs("Please input an integer: ", stdout);
        if ( scanf("%d", &i) != EOF ) { /* 如果用户输入的不是 EOF */
            /* while循环会把输入缓冲中的残留字符清空 */
            /* 读者可以根据需要把它改成宏或者内联函数 */
            /* 注:C99中也定义了内联函数,gcc3.2支持 */
            while ( (c=getchar()) != '/n' && c != EOF ) {
                  ;
            } /* end of while */
        }
        printf("%d/n", i);
    }
    return 0;
}
 
/* C++ 版本 */
#i nclude <iostream>
#i nclude <limits> // 为了使用numeric_limits
 
using std::cout;
using std::endl;
using std::cin;
 
int main( )
{
       int value;
       for (;;) {
              cout << "Enter an integer: ";
              cin >> value;
             /* 读到非法字符后,输入流将处于出错状态,
               * 为了继续获取输入,首先要调用clear函数
               * 来清除输入流的错误标记,然后才能调用
               * ignore函数来清除输入缓冲区中的数据。 */          
              cin.clear( );
              /* numeric_limits<streamsize>::max( ) 返回缓冲区的大小。
               * ignore 函数在此将把输入缓冲区中的数据清空。
       * 这两个函数的具体用法请读者自行查询。 */
              cin.ignore( std::numeric_limits<std::streamsize>::max( ), '/n' );
              cout << value << '/n';
       }
       return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值