【深度好文】不可不知的三種緩沖類型
緩沖
全緩沖
/*來源:公眾號(hào)【編程珠璣】
博客:https://www.yanbinghu.com
buff.c*/
#include<stdio.h>
#include<unistd.h>
int main(void)
{
/*以可讀可寫的方式打開*/
FILE *fp = fopen("./test.txt","w+");
if(NULL == fp)
{
perror("open file failed");
return -1;
}
/*寫入內(nèi)容*/
char buf[] = "wechat:shouwangxiansheng\n";
fwrite(buf,sizeof(char),sizeof(buf),fp);
//fflush(fp);
/*sleep一段時(shí)間,以便觀察*/
sleep(20);
fclose(fp);
return 0;
}
$ gcc -o buff buff.c
$ ./buff
$ cat test.txt
$ cat test.txt
wechat:shouwangxiansheng
行緩沖
/*來源:公眾號(hào)【編程珠璣】
博客:https://www.yanbinghu.com
lineBuff.c*/
#include<stdio.h>
#include<unistd.h>
int main(void)
{
printf("wechat:shouwangxiansheng");
sleep(10);
return 0;
}
$ gcc -o lineBuff lineBuff.c
$ ./lineBuff
printf("wechat:shouwangxiansheng\n");
不帶緩沖
/*來源:公眾號(hào)【編程珠璣】
博客:https://www.yanbinghu.com
noBuff.c*/
#include<stdio.h>
#include<unistd.h>
int main(void)
{
fprintf(stderr,"wechat:shouwangxiansheng");
sleep(10);
return 0;
}
總結(jié)
-
通常磁盤上的文件是全緩沖區(qū)的 -
標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸入通常是行緩沖的 -
指向終端設(shè)備的流通常是行緩沖,而指向文件時(shí),則是全緩沖 -
為了盡可能顯示錯(cuò)誤信息,標(biāo)準(zhǔn)錯(cuò)誤是不帶緩沖的
推薦閱讀
(點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)
【編程之美】用C語言實(shí)現(xiàn)狀態(tài)機(jī)(實(shí)用)
【超詳細(xì)C語言】帶你吃透貪吃蛇游戲之精髓
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請(qǐng)聯(lián)系我們,謝謝!