C 標準庫 –stdio.h 簡介
阿新 • • 發佈:2018-11-29
參考https://www.w3cschool.cn/c/c-standard-library-stdio-h.html
C 標準庫 - <stdio.h> 簡介
stdio .h 標頭檔案定義了三個變數型別、一些巨集和各種函式來執行輸入和輸出。
1 庫變數
下面是標頭檔案 stdio.h 中定義的變數型別:
序號 | 變數 | 描述 |
---|---|---|
1 | size_t | 這是無符號整數型別,它是 sizeof 關鍵字的結果。 |
2 | FILE | 這是一個適合儲存檔案流資訊的物件型別。 |
3 | fpos_t | 這是一個適合儲存檔案中任何位置的物件型別。 |
2 庫巨集
下面是標頭檔案 stdio.h 中定義的巨集:
序號 | 巨集 | 描述 |
---|---|---|
1 | NULL | 這個巨集是一個空指標常量的值。 |
2 | _IOFBF、_IOLBF 和 _IONBF | 這些巨集擴充套件了帶有特定值的整型常量表達式,並適用於 setvbuf 函式的第三個引數。 |
3 | BUFSIZ | 這個巨集是一個整數,該整數代表了 setbuf 函式使用的緩衝區大小。 |
4 | EOF | 這個巨集是一個表示已經到達檔案結束的負整數。 |
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 型別的指標,分別對應於標準錯誤、標準輸入和標準輸出流。 |
3 庫函式
下面是標頭檔案 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,後跟一個冒號,然後是一個空格。 |