[Linux流操作]查看三種標(biāo)準(zhǔn)流的緩沖方式

#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è)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。

//這是一個分別打印三個標(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://muchs.cn/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)

外貿(mào)網(wǎng)站建設(shè)