#include <stdio.h> #include <stdlib.h> #if defined(MACOS) #define _IO_UNBUFFERED __SNBF #define _IO_LINE_BUF __SLBF #define _IO_file_flags _flags #define BUFFERSZ(fp) (fp)->_bf._size #else #define BUFFERSZ(fp) ((fp)->_IO_buf_end - (fp)->_IO_buf_base) #endif void pr_stdio(const char *, FILE *); int main(void) { FILE *fp; printf("pls enter some str\n"); //提示輸入部分字符 if (getchar() == EOF) //如果EOF錯誤 { perror("getchar error"); } fputs("one line to standard error\n", stderr); pr_stdio("stdin", stdin); pr_stdio("stdout", stdout); pr_stdio("stderr", stderr); //輸出相應(yīng)的緩沖類型 perror("fopen error"); if (getc(fp) == EOF) perror("getc error"); pr_stdio("/etc/motd", fp); exit(0); } //緩沖輸出函數(shù) void pr_stdio(const char *name, FILE *fp) { printf("stream = %s, ", name); //打印緩沖名稱 if (fp->_IO_file_flags & _IO_UNBUFFERED) printf("unbuffered"); else if (fp->_IO_file_flags & _IO_LINE_BUF) printf("line buffered"); else /* if neither of above */ printf("fully buffered"); printf(", buffer size = %ld\n", BUFFERSZ(fp)); }
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供尋烏企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、H5頁面制作、小程序制作等業(yè)務(wù)。10年已為尋烏眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
//這是一個分別打印三個標(biāo)準(zhǔn)流和一個文件流 //的緩沖方式的應(yīng)用實例 #include <stdio.h> #include <stdlib.h> #if defined(MACOS) #define _IO_UNBUFFERED __SNBF #define _IO_LINE_BUF __SLBF #define _IO_file_flags _flags #define BUFFERSZ(fp) (fp)->_bf._size #else #define BUFFERSZ(fp) ((fp)->_IO_buf_end - (fp)->_IO_buf_base) #endif //以上是關(guān)于緩沖方式和緩沖區(qū)大小的預(yù)定義 void pr_stdio(const char *, FILE *); //子函數(shù)聲明 int main(int argc,char *argv[]) { FILE *fp; //流文件結(jié)構(gòu)指針 pr_stdio("stdin", stdin); //標(biāo)準(zhǔn)輸入 pr_stdio("stdout", stdout); //標(biāo)準(zhǔn)輸出 pr_stdio("stderr", stderr); //標(biāo)準(zhǔn)出錯處理 printf("fopen error"); if (getc(fp) == EOF) { printf("getc error\n"); } return 0; } //測試緩沖輸出函數(shù) void pr_stdio(const char *name, FILE *fp) { printf("當(dāng)前流是%s, ", name); //打印流的名稱 if (fp->_IO_file_flags & _IO_UNBUFFERED) { printf("無緩沖\n"); } else if (fp->_IO_file_flags & _IO_LINE_BUF) { printf("行緩沖\n"); } else { printf("全緩沖\n"); } printf(", 緩沖區(qū)大小 = %ld\n", BUFFERSZ(fp)); return; }
網(wǎng)頁標(biāo)題:[Linux流操作]查看三種標(biāo)準(zhǔn)流的緩沖方式
文章鏈接:http://bm7419.com/article42/iiodec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、電子商務(wù)、做網(wǎng)站、、域名注冊、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)