<b>stdio .h</b> 頭檔案定義了三個變量類型、一些宏和各種函數來執行輸入和輸出。
下面是頭檔案 stdio.h 中定義的變量類型:
序号
變量 & 描述
1
<b>size_t </b>
這是無符号整數類型,它是 <b>sizeof</b> 關鍵字的結果。
2
<b>FILE </b>
這是一個适合存儲檔案流資訊的對象類型。
3
<b>fpos_t </b>
這是一個适合存儲檔案中任何位置的對象類型。
下面是頭檔案 stdio.h 中定義的宏:
宏 & 描述
<b>NULL</b>
這個宏是一個空指針常量的值。
<b>_IOFBF、_IOLBF</b> 和 <b> _IONBF </b>
這些宏擴充了帶有特定值的整型常量表達式,并适用于 <b>setvbuf</b> 函數的第三個參數。
<b>BUFSIZ</b>
這個宏是一個整數,該整數代表了 <b>setbuf</b> 函數使用的緩沖區大小。
4
<b>EOF</b>
這個宏是一個表示已經到達檔案結束的負整數。
5
<b>FOPEN_MAX</b>
這個宏是一個整數,該整數代表了系統可以同時打開的檔案數量。
6
<b>FILENAME_MAX</b>
這個宏是一個整數,該整數代表了字元數組可以存儲的檔案名的最大長度。如果實作沒有任何限制,則該值應為推薦的最大值。
7
<b>L_tmpnam</b>
這個宏是一個整數,該整數代表了字元數組可以存儲的由 tmpnam 函數建立的臨時檔案名的最大長度。
8
<b>SEEK_CUR、SEEK_END</b> 和 <b>SEEK_SET</b>
這些宏是在 <b>fseek</b> 函數中使用,用于在一個檔案中定位不同的位置。
9
<b>TMP_MAX </b>
這個宏是 tmpnam 函數可生成的獨特檔案名的最大數量。
10
<b>stderr、stdin</b> 和 <b>stdout </b>
這些宏是指向 FILE 類型的指針,分别對應于标準錯誤、标準輸入和标準輸出流。
下面是頭檔案 stdio.h 中定義的函數:
為了更好地了解函數,請按照下面的序列學習這些函數,因為第一個函數中建立的檔案會在後續的函數中使用到。
函數 & 描述
int fclose(FILE *stream)
關閉流 stream。重新整理所有的緩沖區。
void clearerr(FILE *stream)
清除給定流 stream 的檔案結束和錯誤辨別符。
int feof(FILE *stream)
測試給定流 stream 的檔案結束辨別符。
int ferror(FILE *stream)
測試給定流 stream 的錯誤辨別符。
int fflush(FILE *stream)
重新整理流 stream 的輸出緩沖區。
int fgetpos(FILE *stream, fpos_t *pos)
擷取流 stream 的目前檔案位置,并把它寫入到 pos。
FILE *fopen(const char *filename, const char *mode)
使用給定的模式 mode 打開 filename 所指向的檔案。
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
從給定流 stream 讀取資料到 ptr 所指向的數組中。
FILE *freopen(const char *filename, const char *mode, FILE *stream)
把一個新的檔案名 filename 與給定的打開的流 stream 關聯,同時關閉流中的舊檔案。
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 所指向的字元串内。當讀取 <b>(n-1)</b> 個字元時,或者讀取到換行符時,或者到達檔案末尾時,它會停止,具體視情況而定。
32
int fputc(int char, FILE *stream)
把參數 char 指定的字元(一個無符号字元)寫入到指定的流 stream 中,并把位置辨別符往前移動。
33
int fputs(const char *str, FILE *stream)
把字元串寫入到指定的流 stream 中,但不包括空字元。
34
int getc(FILE *stream)
35
int getchar(void)
從标準輸入 stdin 擷取一個字元(一個無符号字元)。
36
char *gets(char *str)
從标準輸入 stdin 讀取一行,并把它存儲在 str 所指向的字元串中。當讀取到換行符時,或者到達檔案末尾時,它會停止,具體視情況而定。
37
int putc(int char, FILE *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,後跟一個冒号,然後是一個空格。
42
int snprintf(char *str, size_t size, const char *format, ...)
格式字元串到 str 中。