C 標準函式庫 - <stdio.h>
簡介
stdio .h 頭檔定義了三個變數類型、一些巨集和各種函數來執行輸入和輸出。
庫變數
下面是頭檔stdio.h 中定義的變數類型:
序號 | 變數& 描述 |
---|---|
1 | size_t 這是無符號整數類型,它是sizeof 關鍵字的結果。 |
2 | FILE 這是適合儲存檔案流資訊的物件類型。 |
3 | fpos_t #這是適合儲存檔案中任何位置的物件類型。 |
庫巨集
以下是頭檔stdio.h 中定義的巨集:
序號 | 巨集& 描述 |
---|---|
1 | #NULL 這個巨集是一個空指標常數的值。 |
2 | _IOFBF、_IOLBF 和 _IONBF 這些巨集擴充了帶有特定值的整數常數表達式,並適用於setvbuf 函數的第三個參數。 |
3 | BUFSIZ 這個巨集是一個整數,該整數代表了setbuf 函數所使用的緩衝區大小。 |
4 | EOFM 這個巨集是一個表示已經到達檔案結束的負整數。 |
5 | FOPEN_MAX 這個巨集是一個整數,該整數代表了系統可以同時開啟的檔案數。 |
6 | FILENAME_MAX 這個巨集是一個整數,該整數代表了字元陣列可以儲存的檔案名稱的最大長度。如果實現沒有任何限制,則該值應為建議的最大值。 |
7 | L_tmpnam 這個巨集是一個整數,該整數代表了字元陣列可以儲存的由tmpnam 函數建立的臨時檔案名稱的最大長度。 |
8 | SEEK_CUR、SEEK_END 和SEEK_SET 這些巨集是在These macros are used in the fseek 函數中使用,用於在一個檔案中定位不同的位置。 |
9 | TMP_MAX 這個巨集是 tmpnam 函數可產生的獨特檔案名稱的最大數量。 |
10 | stderr、stdin 和stdout 這些巨集是指向FILE 類型的指針,分別對應於標準誤差、標準輸入和標準輸出流。 |
函式庫函數
下面是頭檔 stdio.h 中定義的函數:
為了更好地理解函數,請按照下面的序列學習這些函數,因為第一個函數中建立的檔案會在後續的函數中使用。
序號 | 函數& 描述 |
---|---|
#1 | int fclose(FILE *stream ) 關閉流stream。刷新所有的緩衝區。 |
2 | void clearerr(FILE *stream) 清除給定流 stream 的檔案結束和錯誤識別碼。 |
3 | int feof(FILE *stream) 測試給定流 stream 的檔案結束識別碼。 |
4 | int ferror(FILE *stream) 測試給定流 stream 的錯誤識別碼。 |
5 | int fflush(FILE *stream) 更新流 stream 的輸出緩衝區。 |
6 | int fgetpos(FILE *stream, fpos_t *pos) 取得流 stream 的目前檔案位置,並把它寫入到 pos。 |
7 | FILE *fopen(const char *filename, const char *mode) 使用給定的模式 mode 開啟 filename 所指向的檔案。 |
8 | size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 從給定流stream 讀取資料到ptr 所指向的數組中。 |
9 | FILE *freopen(const char *filename, const char *mode, FILE *stream) 把一個新的檔案名稱filename 與給定的開啟的流stream 關聯,同時關閉流中的舊檔案。 |
10 | int fseek(FILE *stream, long int offset, int whence) 設定流stream 的檔案位置為給定的偏移offset,參數offset 意味著從給定的whence 位置尋找的位元組數。 |
11 | int fsetpos(FILE *stream, const fpos_t *pos) 設定給定流 stream 的檔案位置為給定的位置。參數 pos 是由函數 fgetpos 給出的位置。 |
12 | long int ftell(FILE *stream) 傳回給定流 stream 的目前檔案位置。 |
13 | size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 把ptr 所指向的陣列中的資料寫入到給定流stream 中。 |
14 | int remove(const char *filename) 刪除給定的檔案名稱 filename,以便它不再被存取。 |
15 | int rename(const char *old_filename, const char *new_filename) 把 old_filename 所指向的檔案名稱改為 new_filename。 |
16 | void rewind(FILE *stream) 設定檔案位置為給定流 stream 的檔案的開頭。 |
17 | void setbuf(FILE *stream, char *buffer) 定義流 stream 要如何緩衝。 |
18 | int setvbuf(FILE *stream, char *buffer, int mode, size_t size) 另一個定義流 stream 應如何緩衝的函數。 |
19 | FILE *tmpfile(void) 以二進位更新模式(wb+)建立臨時檔案。 |
20 | char *tmpnam(char *str) 產生並傳回一個有效的暫存檔案名,該檔案名稱之前是不存在的。 |
21 | int fprintf(FILE *stream, const char *format, ...) 傳送格式化輸出到串流 stream 中。 |
22 | int printf(const char *format, ...) 傳送格式化輸出到標準輸出 stdout。 |
23 | int sprintf(char *str, const char *format, ...) 傳送格式化輸出到字串。 |
24 | int vfprintf(FILE *stream, const char *format, va_list arg) 使用參數清單傳送格式化輸出至串流 stream 中。 |
25 | int vprintf(const char *format, va_list arg) 使用參數清單傳送格式化輸出到標準輸出 stdout。 |
26 | int vsprintf(char *str, const char *format, va_list arg) 使用參數清單傳送格式化輸出到字串。 |
27 | int fscanf(FILE *stream, const char *format, ...) 從流 stream 讀取格式化輸入。 |
28 | int scanf(const char *format, ...) 從標準輸入 stdin 讀取格式化輸入。 |
29 | int sscanf(const char *str, const char *format, ...) 從字串讀取格式化輸入。 |
30 | int fgetc(FILE *stream) 從指定的流stream 取得下一個字元(一個無符號字元),並將位置識別符往前移動。 |
31 | char *fgets(char *str, int n, FILE *stream) 從指定的流stream 讀取一行,並把它存儲在str 所指向的字串內。當讀取 (n-1) 字元時,或讀取到換行符時,或到達檔案末端時,它會停止,具體視情況而定。 |
32 | int fputc(int char, FILE *stream) 把參數char 指定的字元(一個無符號字元)寫入到指定的流stream 中,並將位置標識符往前移動。 |
33 | int fputs(const char *str, FILE *stream) 把字串寫入到指定的流stream 中,但不包含空字元。 |
34 | int getc(FILE *stream) 從指定的流stream 取得下一個字元(一個無符號字元),並將位置識別符往前移動。 |
35 | int getchar(void) 從標準輸入 stdin 取得一個字元(一個無符號字元)。 |
36 | char *gets(char *str) 從標準輸入stdin 讀取一行,並把它儲存在str 所指向的字串中。當讀取到換行符時,或到達文件末尾時,它會停止,具體視情況而定。 |
37 | int putc(int char, FILE *stream) 把參數char 指定的字元(一個無符號字元)寫入到指定的流stream 中,並將位置標識符往前移動。 |
38 | int putchar(int char) 把參數 char 指定的字元(一個無符號字元)寫入到標準輸出 stdout 中。 |
39 | int puts(const char *str) 把一個字串寫入到標準輸出stdout,直到空字符,但不包括空字符。換行符會被追加到輸出中。 |
40 | int ungetc(int char, FILE *stream) 把字元char(一個無符號字元)推入到指定的流stream 中,以便它是下一個被讀取到的字元。 |
41 | void perror(const char *str) 把一個描述性錯誤訊息輸出到標準錯誤 stderr。首先輸出字串 str,後面跟著一個冒號,然後是一個空格。 |