#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錯(cuò)誤
{
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è)計(jì)、H5頁面制作、小程序制作等業(yè)務(wù)。10年已為尋烏眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
//這是一個(gè)分別打印三個(gè)標(biāo)準(zhǔn)流和一個(gè)文件流
//的緩沖方式的應(yīng)用實(shí)例
#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)出錯(cuò)處理
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://www.chinadenli.net/article42/iiodec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、電子商務(wù)、做網(wǎng)站、、域名注冊、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)