您好,登錄后才能下訂單哦!
#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); //輸出相應的緩沖類型 perror("fopen error"); if (getc(fp) == EOF) perror("getc error"); pr_stdio("/etc/motd", fp); exit(0); } //緩沖輸出函數 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)); }
//這是一個分別打印三個標準流和一個文件流 //的緩沖方式的應用實例 #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(int argc,char *argv[]) { FILE *fp; //流文件結構指針 pr_stdio("stdin", stdin); //標準輸入 pr_stdio("stdout", stdout); //標準輸出 pr_stdio("stderr", stderr); //標準出錯處理 printf("fopen error"); if (getc(fp) == EOF) { printf("getc error\n"); } return 0; } //測試緩沖輸出函數 void pr_stdio(const char *name, FILE *fp) { printf("當前流是%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(", 緩沖區大小 = %ld\n", BUFFERSZ(fp)); return; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。