C语言文件补充笔记3:刷新文件缓冲区

刷新文件缓冲区的三种方法:
a>缓冲区满
b>fflush函数强制刷新
c>程序正常退出

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void buffer_area() {
	FILE* fp = fopen("buffer.txt", "w");
	if (!fp)
	{
		perror("open");
		return -1;
	}
	fputs("hellodemo", fp);
	while (1);

}
int main() {
	buffer_area();
	return 0;
}

buffer_area函数中,有一个死循环while (1);,这个死循环前面有一个写函数fputs("hellodemo", fp);,按理说,在死循环开始前,hellodemo已经被写入了文件中,但此时打开文件却什么都没有。原因是这些内容都在缓冲区,当缓冲区被刷新的时候,就能写入到文件中,这里只有等到main函数执行结束,程序征程退出,才能刷新缓冲区。

如果加入fflush函数,那么是强制刷新缓冲区,不需要等待程序退出。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void buffer_area() {
	FILE* fp = fopen("buffer.txt", "w");
	if (!fp)
	{
		perror("open");
		return -1;
	}
	fputs("hellodemo", fp);
	fflush(fp);
	while (1);

}
int main() {
	buffer_area();
	return 0;
}

在Windows中,stdout没有缓冲区,printf("xxxx");直接输出到屏幕上。而在Linux中,stdout是有缓冲区的,printf("xxxx");输出的内容是先到缓冲区中,然后到屏幕;但是如果要显示的字符串有\n,例如printf("xxxx\n");是能够刷新缓冲区的,也就是能即时显示到屏幕上。

对于标准输入stdin,不能调用fflush强制刷新缓冲区,Windows和Linux都不行。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值