C语言文件补充笔记3:刷新文件缓冲区
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
刷新文件缓冲区的三种方法
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");
是能够刷新缓冲区的也就是能即时显示到屏幕上。
对于标准输入不能调用fflush强制刷新Windows和Linux都不行。