全缓冲
- 会保存在缓冲区中
行缓冲
- 碰到\n或者\r则输出(一般是显示在命令行的函数,不然每次要填满缓冲区或者手动刷新岂不是很累!)
- printf(),fprintf()
无缓冲
- 不缓冲,stderro通常是无缓冲的
- 包括系统调用,read(),write()
特殊
- printf和fwrite库函数会自带缓冲区,当发生重定向到普通文件时,数据的缓冲方式由行缓冲变成了全缓冲
关于验证printf是行缓冲,本地运行不应该输出Hello,待解决
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int main(void){
// FILE *fp=freopen("out.txt","w",stdout);
printf("Hello");
// printf("%d\n",1);
// cout << endl;
// fflush(stdout);
while(1);
return 0;
}