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 參見¶
跋¶
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2001-12-26 |