stdio .h 頭文件定義了三個變量類型、一些宏和各種函數(shù)來執(zhí)行輸入和輸出。
下面是頭文件 stdio.h 中定義的變量類型:
序號 | 變量 & 描述 |
---|---|
1 | size_t 這是無符號整數(shù)類型,它是 sizeof 關(guān)鍵字的結(jié)果。 |
2 | FILE 這是一個適合存儲文件流信息的對象類型。 |
3 | fpos_t 這是一個適合存儲文件中任何位置的對象類型。 |
下面是頭文件 stdio.h 中定義的宏:
序號 | 宏 & 描述 |
---|---|
1 | NULL 這個宏是一個空指針常量的值。 |
2 | _IOFBF、_IOLBF 和 _IONBF 這些宏擴展了帶有特定值的整型常量表達式,并適用于 setvbuf 函數(shù)的第三個參數(shù)。 |
3 | BUFSIZ 這個宏是一個整數(shù),該整數(shù)代表了 setbuf 函數(shù)使用的緩沖區(qū)大小。 |
4 | EOF 這個宏是一個表示已經(jīng)到達文件結(jié)束的負整數(shù)。 |
5 | FOPEN_MAX 這個宏是一個整數(shù),該整數(shù)代表了系統(tǒng)可以同時打開的文件數(shù)量。 |
6 | FILENAME_MAX 這個宏是一個整數(shù),該整數(shù)代表了字符數(shù)組可以存儲的文件名的最大長度。如果實現(xiàn)沒有任何限制,則該值應(yīng)為推薦的最大值。 |
7 | L_tmpnam 這個宏是一個整數(shù),該整數(shù)代表了字符數(shù)組可以存儲的由 tmpnam 函數(shù)創(chuàng)建的臨時文件名的最大長度。 |
8 | SEEK_CUR、SEEK_END 和 SEEK_SET 這些宏是在These macros are used in the fseek 函數(shù)中使用,用于在一個文件中定位不同的位置。 |
9 | TMP_MAX 這個宏是 tmpnam 函數(shù)可生成的獨特文件名的最大數(shù)量。 |
10 | stderr、stdin 和 stdout 這些宏是指向 FILE 類型的指針,分別對應(yīng)于標準錯誤、標準輸入和標準輸出流。 |
下面是頭文件 stdio.h 中定義的函數(shù):
為了更好地理解函數(shù),請按照下面的序列學習這些函數(shù),因為第一個函數(shù)中創(chuàng)建的文件會在后續(xù)的函數(shù)中使用到。
序號 | 函數(shù) & 描述 |
---|---|
1 | int fclose(FILE *stream) 關(guān)閉流 stream。刷新所有的緩沖區(qū)。 |
2 | void clearerr(FILE *stream) 清除給定流 stream 的文件結(jié)束和錯誤標識符。 |
3 | int feof(FILE *stream) 測試給定流 stream 的文件結(jié)束標識符。 |
4 | int ferror(FILE *stream) 測試給定流 stream 的錯誤標識符。 |
5 | int fflush(FILE *stream) 刷新流 stream 的輸出緩沖區(qū)。 |
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 讀取數(shù)據(jù)到 ptr 所指向的數(shù)組中。 |
9 | FILE *freopen(const char *filename, const char *mode, FILE *stream) 把一個新的文件名 filename 與給定的打開的流 stream 關(guān)聯(lián),同時關(guān)閉流中的舊文件。 |
10 | int fseek(FILE *stream, long int offset, int whence) 設(shè)置流 stream 的文件位置為給定的偏移 offset,參數(shù) offset 意味著從給定的 whence 位置查找的字節(jié)數(shù)。 |
11 | int fsetpos(FILE *stream, const fpos_t *pos) 設(shè)置給定流 stream 的文件位置為給定的位置。參數(shù) pos 是由函數(shù) fgetpos 給定的位置。 |
12 | long int ftell(FILE *stream) 返回給定流 stream 的當前文件位置。 |
13 | size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 把 ptr 所指向的數(shù)組中的數(shù)據(jù)寫入到給定流 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) 設(shè)置文件位置為給定流 stream 的文件的開頭。 |
17 | void setbuf(FILE *stream, char *buffer) 定義流 stream 應(yīng)如何緩沖。 |
18 | int setvbuf(FILE *stream, char *buffer, int mode, size_t size) 另一個定義流 stream 應(yīng)如何緩沖的函數(shù)。 |
19 | FILE *tmpfile(void) 以二進制更新模式(wb+)創(chuàng)建臨時文件。 |
20 | char *tmpnam(char *str) 生成并返回一個有效的臨時文件名,該文件名之前是不存在的。 |
21 | int fprintf(FILE *stream, const char *format, ...) 發(fā)送格式化輸出到流 stream 中。 |
22 | int printf(const char *format, ...) 發(fā)送格式化輸出到標準輸出 stdout。 |
23 | int sprintf(char *str, const char *format, ...) 發(fā)送格式化輸出到字符串。 |
24 | int vfprintf(FILE *stream, const char *format, va_list arg) 使用參數(shù)列表發(fā)送格式化輸出到流 stream 中。 |
25 | int vprintf(const char *format, va_list arg) 使用參數(shù)列表發(fā)送格式化輸出到標準輸出 stdout。 |
26 | int vsprintf(char *str, const char *format, va_list arg) 使用參數(shù)列表發(fā)送格式化輸出到字符串。 |
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èi)。當讀取 (n-1) 個字符時,或者讀取到換行符時,或者到達文件末尾時,它會停止,具體視情況而定。 |
32 | int fputc(int char, FILE *stream) 把參數(shù) 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) 把參數(shù) char 指定的字符(一個無符號字符)寫入到指定的流 stream 中,并把位置標識符往前移動。 |
38 | int putchar(int char) 把參數(shù) 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,后跟一個冒號,然后是一個空格。 |
更多建議: