stdio - 標準輸入輸出庫函式
#include <stdio.h>
FILE *stdin;
FILE *stdout;
FILE *stderr;
標註 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
,在顯式地取消宏的定義時,可以使用它們。
- 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'') 標準。
open(2),
close(2),
read(2),
write(2),
stdout(3)
本頁面中文版由中文 man
手冊頁計劃提供。
中文 man 手冊頁計劃:
https://github.com/man-pages-zh/manpages-zh