stdio
SYNOPSIS 總覽
#include <stdio.h>
FILE *stdin;
FILE *stdout;
FILE *stderr;
DESCRIPTION 描述
標注 I/O 庫函數(shù)提供了一個簡單而有效的,帶緩沖的流輸出輸出接口。輸入和輸出被映射為邏輯的數(shù)據(jù)流,物理的 I/O
特性則被隱藏起來。庫中包含的函數(shù)與宏列在下面;更多信息可以從獨立的 man 手冊頁中得到。
將一個流關(guān)聯(lián)到一個外部文件 (可能是一個物理設(shè)備) 的方法是打開 ( opening )
這個文件,其中可能牽涉到創(chuàng)建一個新文件。創(chuàng)建已有的文件使得文件中已有的內(nèi)容被丟棄。如果文件支持定位請求
(例如磁盤文件;但終端不是這樣),那么一個與文件關(guān)聯(lián)的定位標記 ( file position indicator ) 被定位到文件的起始 (0
字節(jié)),除非以追加模式打開文件。使用追加模式時,究竟定位標記位于文件的開始還是結(jié)束是沒有指定的。定位標記由后續(xù)的讀、寫和定位請求來維護。從流中輸入時,就如同字符是連續(xù)地成功調(diào)用了函數(shù)
fgetc(3) 而讀入的;產(chǎn)生輸出時,就如同所有字符是連續(xù)地成功調(diào)用了函數(shù) fputc(3) 而輸出的。
將一個流與一個與之關(guān)聯(lián)的文件斷開的辦法是關(guān)閉 ( closing ) 這個文件。在流與文件斷開之前,輸出流被刷新
(任何未寫入的緩沖的內(nèi)容都被傳輸給主機環(huán)境)。在文件被關(guān)閉之后,指向 FILE 對象的指針的值是不確定的 (無用數(shù)據(jù))。
一個文件可以繼續(xù)被相同的或是不同的程序?qū)嶓w再次打開,它的內(nèi)容可以被恢復(fù)或者修改 (如果它可以被重定位到文件開始的話)。如果 main
函數(shù)返回到它最初的調(diào)用者,或者調(diào)用了函數(shù) exit(3) ,在程序終止前,所有打開的文件都將被關(guān)閉
(因此所有的輸出流都被刷新)。其他終止程序的方法,例如 abort(3) 不會進行正常的關(guān)閉文件操作。
在程序啟動時,會預(yù)先定義三個文本流,它們不需要顯式地打開 --- 標準輸入 (用于讀入常規(guī)內(nèi)容),--- 標準輸出
(用于輸出常規(guī)內(nèi)容),以及 標準錯誤 (用于輸出診斷信息)。這些流的縮寫是 stdin,stdout 和 stderr
。在打開時,標準錯誤流不會完全緩沖;當且僅當流不是一個交互的設(shè)備時,標準輸入和標準輸出流才被完全緩沖。
指向終端設(shè)備的輸出流總是默認使用行緩沖;未定的輸出總是在指向一個終端設(shè)備的輸入流被讀取時自動被寫入。如果在一個輸出終端上打印了一行的一部分,然后運行了大量的計算后,應(yīng)當在退出和計算前
fflush(3) 標準輸出,使得輸出可以顯示出來。(?)
標準輸入輸出庫 stdio 是函數(shù)庫 libc 的一部分,需要時可以被編譯器 cc(1) 和
pc(1) 自動加載。下列手冊頁的 SYNOPSIS 總覽
段落會指出要包含哪些文件,函數(shù)定義的格式,以及它們受到哪些外部變量的影響。
下列為已定義的宏;如果不用 #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. 另外,還有與這些宏的功能對應(yīng)的,函數(shù)形式的版本 feof, ferror,
clearerr, fileno, getc, getchar, putc, 和
putchar ,在顯式地取消宏的定義時,可以使用它們。
LIST OF FUNCTIONS 函數(shù)列表
Function 函數(shù)
Description 描述
clearerr
檢測并重置流狀態(tài)
fclose
關(guān)閉流
fdopen
打開流
feof
檢測并重置流狀態(tài)
ferror
檢測并重置流狀態(tài)
fflush
刷新流
fgetc
從輸入流中獲取下一個字符或詞
fgetpos
重定位流
fgets
從流中獲取一行
fileno
返回流參數(shù)的整數(shù)形式的描述符
fopen
打開流
fprintf
按照格式輸出常規(guī)內(nèi)容
fpurge
刷新流
fputc
向流輸出一個字符或詞
fputs
向流輸出一行
fread
二進制輸入/輸出
freopen
打開流
fropen
打開流
fscanf
按照格式輸入常規(guī)內(nèi)容
fseek
重定位流
fsetpos
重定位流
ftell
重定位流
fwrite
二進制輸入/輸出
getc
從輸入流中獲取下一個字符或詞
getchar
從輸入流中獲取下一個字符或詞
gets
從流中獲取一行
getw
從輸入流中獲取下一個字符或詞
mktemp
創(chuàng)建 (唯一的) 臨時文件名
perror
系統(tǒng)錯誤消息
printf
按照格式輸出常規(guī)內(nèi)容
putc
向流輸出一個字符或詞
putchar
向流輸出一個字符或詞
puts
向流輸出一行
putw
向流輸出一個字符或詞
remove
刪除目錄項
rewind
重定位流
scanf
按照格式輸入常規(guī)內(nèi)容
setbuf
流緩沖操作
setbuffer
流緩沖操作
setlinebuf
流緩沖操作
setvbuf
流緩沖操作
sprintf
按照格式輸出常規(guī)內(nèi)容
sscanf
按照格式輸入常規(guī)內(nèi)容
strerror
系統(tǒng)錯誤消息
sys_errlist
系統(tǒng)錯誤消息
sys_nerr
系統(tǒng)錯誤消息
tempnam
臨時文件控制
tmpfile
臨時文件控制
tmpnam
臨時文件控制
ungetc
向輸入流中退回字符
vfprintf
按照格式輸出常規(guī)內(nèi)容
vfscanf
按照格式輸入常規(guī)內(nèi)容
vprintf
按照格式輸出常規(guī)內(nèi)容
vscanf
按照格式輸入常規(guī)內(nèi)容
vsprintf
按照格式輸出常規(guī)內(nèi)容
vsscanf
按照格式輸入常規(guī)內(nèi)容
總結(jié)
- 上一篇: [译]PostCSS介绍
- 下一篇: SQLSERVER查询数据库文件大小