C语言fflush方法
函数名: 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方法相关推荐
- 黑白棋(人人对战)——C语言实现方法之一
黑白棋(人人对战)--C语言实现方法之一 黑白棋,又叫翻转棋(Reversi).奥赛罗棋(Othello).苹果棋或正反棋(Anti reversi).黑白棋在西方和日本很流行.游戏通过相互翻转对方的 ...
- R语言sys方法:sys.info函数获取系统和用户信息、sys.localeConv函数获取当前区域中的数字和货币表示的详细信息、sys.setFileTime函数更改文件的时间
R语言sys方法:sys.info函数获取系统和用户信息.sys.localeConv函数获取当前区域中的数字和货币表示的详细信息.sys.setFileTime函数更改文件的时间 目录
- R语言sys方法:sys.chmod函数改变指定文件的权限、Sys.Date函数返回系统的当前日期、Sys.time函数返回系统的当前时间
R语言sys方法:sys.chmod函数改变指定文件的权限.Sys.Date函数返回系统的当前日期.Sys.time函数返回系统的当前时间 目录
- R语言sys方法:sys.getpid函数获取R会话的进程ID、sys.glob函数和file.path函数匹配文件夹下的所有特定类型文件、sys.info函数获取系统和用户信息
R语言sys方法:sys.getpid函数获取R会话的进程ID.sys.glob函数和file.path函数匹配文件夹下的所有特定类型文件.sys.info函数获取系统和用户信息 目录
- R语言sys方法:sys.timezone函数返回当前系统时区的名称、system.File函数查找系统文件或者安装包的文件路径(例如查看R Base可安装路径、dplyr包的安装路径)
R语言sys方法:sys.timezone函数返回当前系统时区的名称.system.File函数查找系统文件或者安装包的文件路径(例如查看R Base可安装路径.dplyr包的安装路径) 目录
- python语言的格式框架_django框架模板语言使用方法详解
本文实例讲述了django框架模板语言使用方法.分享给大家供大家参考,具体如下: 模板功能 作用:生成html界面内容,模版致力于界面如何显示,而不是程序逻辑.模板不仅仅是一个html文件,还包括了页 ...
- c语言中fflushstdin作用,C语言fflush(stdin)函数是什么意思,在什么情况下用它
C语言fflush(stdin)函数是什么意思,在什么情况下用它 來源:互聯網 2009-04-22 18:49:31 評論 分類: 電腦/網絡 >> 程序設計 >> 其他 ...
- html js 浏览器语言,js 判断浏览器语言的方法
今天遇到一个要根据浏览器设置语言的类型,来展示网站的字体.比如,浏览器的语言是中文简体,那么网站也要显示中文简体字,如果是繁体或是英文都要根据浏览器当前设置的语言进行显示.那么,飞鸟慕鱼博客来和大家说 ...
- c语言排序方法有哪几种?
c语言排序方法有:1.简单选择排序,基于O(n2)时间复杂度的排序算法:2.冒泡排序:3.简单插入排序:4.希尔排序:5.归并排序,基于归并操作的一种排序算法:6.快速排序,属于分治法的一种:7.堆排 ...
- 论文浅尝 - ACL2022 | 基于多语言语义解耦表示的跨语言迁移方法实现多语言阅读理解...
论文作者:吴林娟,天津大学,研究方向为自然语言理解 论文链接:http://arxiv.org/abs/2204.00996 代码地址:https://github.com/wulinjuan/SSD ...
最新文章
- php时间戳 今天昨天,php求今天、昨天、明天时间戳的简单实现方法
- 蓝桥杯_算法训练_表达式计算
- SAP中smartforms参数
- cus.crm.myaccounts.util.Util.isIntentSupported
- 提高关键词排名的28个SEO技巧
- WordPress导航菜单函数register_nav_menus() 和 wp_nav_menu()
- C/C++预处理指令
- 高效开发 Android App 的 10 个建议
- win2016开启ntp_Windows服务器开启NTP服务
- 安卓手机管理软件_超强手机磁力搜索+播放+下载软件,满速下载,一键播放!...
- NSQ 源码分析之NSQD--lookup
- 本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。
- 微信订阅号申请与使用
- 交互式电子沙盘GIS 虚拟数字沙盘M3D GIS教程
- C语言 —— 一分钟让你理解自增和自减
- Window10磁盘分区
- 竞赛通知|首届工业数字孪生大赛
- unity打包到安卓游玩流程
- angular学习总结-组件插槽
- 同城外卖APP开发高级功能详情