table of contents
STDIO(3) | Linux Programmer's Manual | STDIO(3) |
NAME¶
stdio - 標準輸入輸出庫函數SYNOPSIS 總覽¶
#include <stdio.h>FILE *stdin;
FILE *stdout;
FILE *stderr;
DESCRIPTION 描述¶
標註 I/O 庫函數提供了一個簡單而有效的,帶緩衝的流輸出輸出接口。輸入和輸出被映射爲邏輯的數據流,物理的 I/O 特性則被隱藏起來。庫中包含的函數與宏列在下面;更多信息可以從獨立的 man 手冊頁中得到。將一個流關聯到一個外部文件 (可能是一個物理設備) 的方法是打開 ( opening ) 這個文件,其中可能牽涉到創建一個新文件。創建已有的文件使得文件中已有的內容被丟棄。如果文件支持定位請求 (例如磁盤文件;但終端不是這樣),那麼一個與文件關聯的定位標記 ( file position indicator ) 被定位到文件的起始 (0 字節),除非以追加模式打開文件。使用追加模式時,究竟定位標記位於文件的開始還是結束是沒有指定的。定位標記由後續的讀、寫和定位請求來維護。從流中輸入時,就如同字符是連續地成功調用了函數 fgetc(3) 而讀入的;產生輸出時,就如同所有字符是連續地成功調用了函數 fputc(3) 而輸出的。
將一個流與一個與之關聯的文件斷開的辦法是關閉 ( closing ) 這個文件。在流與文件斷開之前,輸出流被刷新 (任何未寫入的緩衝的內容都被傳輸給主機環境)。在文件被關閉之後,指向 FILE 對象的指針的值是不確定的 (無用數據)。
一個文件可以繼續被相同的或是不同的程序實體再次打開,它的內容可以被恢復或者修改 (如果它可以被重定位到文件開始的話)。如果 main 函數返回到它最初的調用者,或者調用了函數 exit(3) ,在程序終止前,所有打開的文件都將被關閉 (因此所有的輸出流都被刷新)。其他終止程序的方法,例如 abort(3) 不會進行正常的關閉文件操作。
在程序啓動時,會預先定義三個文本流,它們不需要顯式地打開 — 標準輸入 (用於讀入常規內容),— 標準輸出 (用於輸出常規內容),以及 標準錯誤 (用於輸出診斷信息)。這些流的縮寫是 stdin,stdout 和 stderr 。在打開時,標準錯誤流不會完全緩衝;當且僅當流不是一個交互的設備時,標準輸入和標準輸出流才被完全緩衝。
指向終端設備的輸出流總是默認使用行緩衝;未定的輸出總是在指向一個終端設備的輸入流被讀取時自動被寫入。如果在一個輸出終端上打印了一行的一部分,然後運行了大量的計算後,應當在退出和計算前 fflush(3) 標準輸出,使得輸出可以顯示出來。(?)
標準輸入輸出庫 stdio 是函數庫 libc 的一部分,需要時可以被編譯器 cc(1) 和 pc(1) 自動加載。下列手冊頁的 SYNOPSIS 總覽 段落會指出要包含哪些文件,函數定義的格式,以及它們受到哪些外部變量的影響。
下列爲已定義的宏;如果不用 #undef 取消這些名稱的當前定義的話,是不能重新使用它們的: BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_cuserid, L_ctermid, L_tmpnam, NULL, SEEK_END, SEEK_SET, SEE_CUR, TMP_MAX, clearerr, feof, ferror, fileno, fropen, fwopen, getc, getchar, putc, putchar, stderr, stdin, stdout. 另外,還有與這些宏的功能對應的,函數形式的版本 feof, ferror, clearerr, fileno, getc, getchar, putc, 和 putchar ,在顯式地取消宏的定義時,可以使用它們。
LIST OF FUNCTIONS 函數列表¶
- Function 函數
- Description 描述
- clearerr
- 檢測並重置流狀態
- fclose
- 關閉流
- fdopen
- 打開流
- feof
- 檢測並重置流狀態
- ferror
- 檢測並重置流狀態
- fflush
- 刷新流
- fgetc
- 從輸入流中獲取下一個字符或詞
- fgetpos
- 重定位流
- fgets
- 從流中獲取一行
- fileno
- 返回流參數的整數形式的描述符
- fopen
- 打開流
- fprintf
- 按照格式輸出常規內容
- fpurge
- 刷新流
- fputc
- 向流輸出一個字符或詞
- fputs
- 向流輸出一行
- fread
- 二進制輸入/輸出
- freopen
- 打開流
- fropen
- 打開流
- fscanf
- 按照格式輸入常規內容
- fseek
- 重定位流
- fsetpos
- 重定位流
- ftell
- 重定位流
- fwrite
- 二進制輸入/輸出
- getc
- 從輸入流中獲取下一個字符或詞
- getchar
- 從輸入流中獲取下一個字符或詞
- gets
- 從流中獲取一行
- getw
- 從輸入流中獲取下一個字符或詞
- mktemp
- 創建 (唯一的) 臨時文件名
- perror
- 系統錯誤消息
- printf
- 按照格式輸出常規內容
- putc
- 向流輸出一個字符或詞
- putchar
- 向流輸出一個字符或詞
- puts
- 向流輸出一行
- putw
- 向流輸出一個字符或詞
- remove
- 刪除目錄項
- rewind
- 重定位流
- scanf
- 按照格式輸入常規內容
- setbuf
- 流緩衝操作
- setbuffer
- 流緩衝操作
- setlinebuf
- 流緩衝操作
- setvbuf
- 流緩衝操作
- sprintf
- 按照格式輸出常規內容
- sscanf
- 按照格式輸入常規內容
- strerror
- 系統錯誤消息
- sys_errlist
- 系統錯誤消息
- sys_nerr
- 系統錯誤消息
- tempnam
- 臨時文件控制
- tmpfile
- 臨時文件控制
- tmpnam
- 臨時文件控制
- ungetc
- 向輸入流中退回字符
- vfprintf
- 按照格式輸出常規內容
- vfscanf
- 按照格式輸入常規內容
- vprintf
- 按照格式輸出常規內容
- vscanf
- 按照格式輸入常規內容
- vsprintf
- 按照格式輸出常規內容
- vsscanf
- 按照格式輸入常規內容
CONFORMING TO 標準參考¶
函數庫 stdio 遵循 ANSI X3.159-1989 (``ANSI C'') 標準。SEE ALSO 參見¶
open(2), close(2), read(2), write(2), stdout(3)跋¶
本頁面中文版由中文 man 手冊頁計劃提供。中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2001-12-26 |