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
- 按照格式輸入常規內容
函數庫
stdio 遵循 ANSI X3.159-1989 (``ANSI
C'') 標準。
SEE ALSO 參見¶
open(2),
close(2),
read(2),
write(2),
stdout(3)