函数名: fflush

功 能: 清除读写缓冲区,需要立即把输出缓冲区的数据进行物理写入时

头文件:stdio.h

原型:int fflush(FILE *stream)

其中stream是要冲洗的流

fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃[非标准],一般用不到。

fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上

printf("字符串");后面加fflush(stdout);可提高打印效率!

举例:

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>int main()
{int i = 0;for(i = 0;i < 10;i ++){printf("%d",i);sleep(1);}return 0;
}

运行结果:

[wanghe@localhost ~]$ ./test_fflush.exe
0123456789[wanghe@localhost ~]$

输出是一次性输出十个数字,而不是挨个输出,说明输出函数先把输出内容放在缓冲区。

下面介绍一个有意思的程序,注意输出函数后面不能加'\n':

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>int main()
{pid_t id;printf("hello");id = fork();return 0;
}

运行结果:

[wanghe@localhost ~]$ ./test_fflush.exe
hellohello[wanghe@localhost ~]$

虽然printf函数是在fork前,但还是输出了两次,因为输出的内容是先存在缓冲区里的,没有遇到‘\n’ '\r'是不会刷新缓冲区的,所以fork后两个几乎一样的进程会输出两次,接下来就要通过使用fflush函数来进行刷新。

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>int main()
{pid_t id;printf("hello");fflush(stdout);id = fork();return 0;
}

运行结果:

[wanghe@localhost ~]$ ./test_fflush.exe
hello[wanghe@localhost ~]$

printf是一个行缓冲函数

printf函数是标准函数,最终会调用到系统调用函数,printf函数会掉用到write系统函数;但是调用write函数需要满足一些条件件。

(1)缓冲区满

(2)遇到\n

(3)调用fflush函数来冲洗缓冲区

(4)scanf读取缓冲区的内容

(5)调用printf函数的进程或线程结束会调用fflush函数

C语言fflush方法相关推荐

  1. 黑白棋(人人对战)——C语言实现方法之一

    黑白棋(人人对战)--C语言实现方法之一 黑白棋,又叫翻转棋(Reversi).奥赛罗棋(Othello).苹果棋或正反棋(Anti reversi).黑白棋在西方和日本很流行.游戏通过相互翻转对方的 ...

  2. R语言sys方法:sys.info函数获取系统和用户信息、sys.localeConv函数获取当前区域中的数字和货币表示的详细信息、sys.setFileTime函数更改文件的时间

    R语言sys方法:sys.info函数获取系统和用户信息.sys.localeConv函数获取当前区域中的数字和货币表示的详细信息.sys.setFileTime函数更改文件的时间 目录

  3. R语言sys方法:sys.chmod函数改变指定文件的权限、Sys.Date函数返回系统的当前日期、Sys.time函数返回系统的当前时间

    R语言sys方法:sys.chmod函数改变指定文件的权限.Sys.Date函数返回系统的当前日期.Sys.time函数返回系统的当前时间 目录

  4. R语言sys方法:sys.getpid函数获取R会话的进程ID、sys.glob函数和file.path函数匹配文件夹下的所有特定类型文件、sys.info函数获取系统和用户信息

    R语言sys方法:sys.getpid函数获取R会话的进程ID.sys.glob函数和file.path函数匹配文件夹下的所有特定类型文件.sys.info函数获取系统和用户信息 目录

  5. R语言sys方法:sys.timezone函数返回当前系统时区的名称、system.File函数查找系统文件或者安装包的文件路径(例如查看R Base可安装路径、dplyr包的安装路径)

    R语言sys方法:sys.timezone函数返回当前系统时区的名称.system.File函数查找系统文件或者安装包的文件路径(例如查看R Base可安装路径.dplyr包的安装路径) 目录

  6. python语言的格式框架_django框架模板语言使用方法详解

    本文实例讲述了django框架模板语言使用方法.分享给大家供大家参考,具体如下: 模板功能 作用:生成html界面内容,模版致力于界面如何显示,而不是程序逻辑.模板不仅仅是一个html文件,还包括了页 ...

  7. c语言中fflushstdin作用,C语言fflush(stdin)函数是什么意思,在什么情况下用它

    C语言fflush(stdin)函数是什么意思,在什么情况下用它 來源:互聯網  2009-04-22 18:49:31  評論 分類: 電腦/網絡 >> 程序設計 >> 其他 ...

  8. html js 浏览器语言,js 判断浏览器语言的方法

    今天遇到一个要根据浏览器设置语言的类型,来展示网站的字体.比如,浏览器的语言是中文简体,那么网站也要显示中文简体字,如果是繁体或是英文都要根据浏览器当前设置的语言进行显示.那么,飞鸟慕鱼博客来和大家说 ...

  9. c语言排序方法有哪几种?

    c语言排序方法有:1.简单选择排序,基于O(n2)时间复杂度的排序算法:2.冒泡排序:3.简单插入排序:4.希尔排序:5.归并排序,基于归并操作的一种排序算法:6.快速排序,属于分治法的一种:7.堆排 ...

  10. 论文浅尝 - ACL2022 | 基于多语言语义解耦表示的跨语言迁移方法实现多语言阅读理解...

    论文作者:吴林娟,天津大学,研究方向为自然语言理解 论文链接:http://arxiv.org/abs/2204.00996 代码地址:https://github.com/wulinjuan/SSD ...

最新文章

  1. php时间戳 今天昨天,php求今天、昨天、明天时间戳的简单实现方法
  2. 蓝桥杯_算法训练_表达式计算
  3. SAP中smartforms参数
  4. cus.crm.myaccounts.util.Util.isIntentSupported
  5. 提高关键词排名的28个SEO技巧
  6. WordPress导航菜单函数register_nav_menus() 和 wp_nav_menu()
  7. C/C++预处理指令
  8. 高效开发 Android App 的 10 个建议
  9. win2016开启ntp_Windows服务器开启NTP服务
  10. 安卓手机管理软件_超强手机磁力搜索+播放+下载软件,满速下载,一键播放!...
  11. NSQ 源码分析之NSQD--lookup
  12. 本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。
  13. 微信订阅号申请与使用
  14. 交互式电子沙盘GIS 虚拟数字沙盘M3D GIS教程
  15. C语言 —— 一分钟让你理解自增和自减
  16. Window10磁盘分区
  17. 竞赛通知|首届工业数字孪生大赛
  18. unity打包到安卓游玩流程
  19. angular学习总结-组件插槽
  20. 同城外卖APP开发高级功能详情

热门文章

  1. python 之 del() 函数
  2. 数电实验 可逆计数器设计
  3. JAVAOooooo。。。。。ooo0000OOOOO
  4. python爬虫入门(5)----- 阿里巴巴供应商爬虫
  5. Confluence 6 的小型文字档案(Cookies)
  6. 面试官问我:多个 List 如何取交集、并集、去重并集、差集?
  7. 如何区分前端bug还是后端bug?
  8. rho是什么 matlab,RHO值是什么?如何理解RHO值?
  9. 《阴阳师》RPG游戏体验报告
  10. 网络安全技术——网络地址转换(NAT)