頭文件<cstdio>(stdio.h)
執行輸入/輸出操作的C++庫
輸入與輸出操作在C++中也可以通過使用C標準輸入輸出庫(cstdio,在C語言中爲stdio.h)實現。該庫使用所謂的“流“操作物理設備,如鍵盤、打印機、終端或系統支持的其它類型文件。流是與這些物理設備以統一方式交互的抽象概念。所有的流都具有獨立於它們相關聯的物理設備個體特性的相似屬性。
流在cstdio庫中以指向FILE對象的指向方式操作。一個指向FILE對象的指針唯一表示一個流,並且在設計該流的操作中作爲參數使用。
存在三種標準流:stdin、stdout與stderr,它們自動爲所有使用該庫的程序公開創建。
流屬性
流擁有一些屬性,定義了哪些函數可以作用於它們與如何對待從它們輸入或輸出的數據。這些屬性的絕大多數在通過fopen函數將該流與文件關聯(opened)的時刻就已經定義了:
讀/寫訪問
指定該流是否具有它們關聯的物理媒體的讀或寫訪問權限(或兩者都有)。
文本/二進制
文本流被認爲是表示一些列文本行,每一行以換行符結束。根據程序運行環境的不同,爲了使一些特殊字符適應文本文件環境的特殊性,一些字符轉換也許會發生。另一方面,二進制流是不經過任何轉換寫入物理媒介或從物理媒介讀出的一系列字符,它們與從流中讀出或寫入流的字符一一對應。
緩存
混村是一個內存塊,數據在從關聯的文件或設備中讀入或寫入之前累計的地方。流可以是全緩存、行緩存或不緩存。對於全緩存流,數據當該流滿了時讀取/寫入,對於行緩存流,發生在遇到換行符時,對於不緩存流字符立即被讀取/寫入。
定向
在打開時,流是沒有定向的。當輸入/輸出操作作用在它們身上時,它們變成面向字節的或面向寬字節的,這取決於作用的操作符(通常定義在<cstdio>中的函數是面向字節的,然而定義在<cwchar>中的函數是面向寬字節的)。瞭解更多,查看cwchar。
指示器
流用於特定的內部指示器,它們表名它們的當前狀態與哪些影響作用於它們身上的輸入輸出操作的行爲:
錯誤指示符
該指示符當錯誤發生在相對於流的操作時設置。該指示器可以通過ferror函數檢測,並且可以通過調用clearerr、freopen或rewind重設。
文件結束指示符
一旦設定,表明作用於該流上的下一個讀或寫操作到達文件結尾。它可以通過feof函數檢測,並且可以通過調用clearerr、freopen或調用任何重定位函數(rewind,fseek與fsetpos)重設。
定位指示符
它是每個流的一個內部指針,它指向讀或寫向下一個I/O操作的下一個字符。它的值可以通過ftell或fgetpos函數獲取,並且可以通過使用重定位函數rewind、fseek與fsetpos函數改變。
函數
操作文件:
remove | 刪除文件(函數) |
rename | 重命名文件(函數) |
tmpfile | 打開一個臨時文件(函數) |
tmpnam | 產生一個臨時文件名(函數) |
文件訪問:
fclose | 關閉文件(函數) |
fflush | 沖刷流(函數) |
fopen | 打開文件(函數) |
freopen | 用不同的文件或模式重新打開流(函數) |
setbuf | 設置流緩存(函數) |
servbuf | 改變流緩存(函數) |
格式化輸入/輸出:
fprintf | 將格式化數據寫入流(函數) |
fscanf | 從流中讀格式化數據(函數) |
printf | 打印格式化數據到stdout(函數) |
scanf | 從stdin中讀格式化數據(函數) |
snprintf | 將格式化數據寫入定長緩存(函數) |
sprintf | 寫格式化數據到字符串(函數) |
sscanf | 從字符串中讀格式化數據(函數) |
vfprintf | 將格式化數據從變參列表寫入流(函數) |
vfscanf | 從流中讀取格式化數據到變參列表(函數) |
vprintf | 打印變參列表中的格式化數據到stdout(函數) |
vscanf | 讀取格式化數據到變參列表(函數) |
vsnprintf | 將變參列表中的格式化數據寫入定長緩存(函數) |
vsprintf | 將變參列表中的格式化數據寫入字符串(函數) |
vsscanf | 從字符串讀取格式化數據到變參列表(函數) |
字符串輸入/輸出:
fgetc | 從流中獲取字符(函數) |
fgets | 從流中獲取字符串(函數) |
fputc | 將字符寫入流(函數) |
fputs | 將字符串寫入流(函數) |
getc | 從流中獲取字符(函數) |
getchar | 從stdin中獲取字符(函數) |
gets | 從stdin中獲取字符串(函數) |
putc | 將字符寫入流(函數) |
putchar | 將字符寫入stdout(函數) |
puts | 將字符串寫入stdout(函數) |
ungetc | 不從流中獲取字符(函數) |
直接輸入/輸出:
fread | 從流中讀取數據塊(函數) |
fwrite | 將數據塊寫入流(函數) |
文件定位:
fgetpos | 從流中獲取當前位置(函數) |
fseek | 重新定位流位置指示器(函數) |
fsetpos | 設置流位置指示器(函數) |
ftell | 獲取流當前位置(函數) |
rewind | 設置流位置爲開始處(函數) |
錯誤處理:
clearerr | 清除錯誤指示器(函數) |
feof | 檢查文件結束指示器(函數) |
ferror | 檢查錯誤指示器(函數) |
perror | 打印錯誤信息(函數) |
宏
BUFSIZE | 緩衝大小(常量) |
EOF | 文件結束(常量) |
FILENAME_MAX | 文件名的最大長度(常量) |
FOPEN_MAX | 連續打開流的潛在限制(常量) |
L_tmpnam | 臨時文件名的最小長度(常量) |
NULL | null指針(宏) |
TMP_MAX | 臨時文件數量(常量) |
SEEK_CUR、SEEK_END與SEEK_SET(用在fseek)。
類型
FILE | 包含控制流的信息的對象(類型) |
fpos_t | 包含在文件中指定位置的信息的對象(類型) |
size_t | 無符號整數類型(類型) |
英文原版:http://www.cplusplus.com/reference/cstdio/