C 標準庫 – <stdio.h>

C 標準庫 - <stdio.h>

簡介

stdio .h 標頭檔案定義了三個變數型別、一些巨集和各種函式來執行輸入和輸出。

庫變數

下面是標頭檔案 stdio.h 中定義的變數型別:

序號變數 & 描述
1size_t
這是無符號整數型別,它是 sizeof 關鍵字的結果。
2FILE
這是一個適合儲存檔案流資訊的物件型別。
3fpos_t
這是一個適合儲存檔案中任何位置的物件型別。

庫巨集

下面是標頭檔案 stdio.h 中定義的巨集:

序號巨集 & 描述
1NULL
這個巨集是一個空指標常量的值。
2_IOFBF、_IOLBF _IONBF
這些巨集擴充套件了帶有特定值的整型常量表達式,並適用於 setvbuf 函式的第三個引數。
3BUFSIZ
這個巨集是一個整數,該整數代表了 setbuf 函式使用的緩衝區大小。
4EOF
這個巨集是一個表示已經到達檔案結束的負整數。
5FOPEN_MAX
這個巨集是一個整數,該整數代表了系統可以同時開啟的檔案數量。
6FILENAME_MAX
這個巨集是一個整數,該整數代表了字元陣列可以儲存的檔名的最大長度。如果實現沒有任何限制,則該值應為推薦的最大值。
7L_tmpnam
這個巨集是一個整數,該整數代表了字元陣列可以儲存的由 tmpnam 函式建立的臨時檔名的最大長度。
8SEEK_CUR、SEEK_ENDSEEK_SET
這些巨集是在 fseek 函式中使用,用於在一個檔案中定位不同的位置。
9TMP_MAX
這個巨集是 tmpnam 函式可生成的獨特檔名的最大數量。
10stderr、stdinstdout
這些巨集是指向 FILE 型別的指標,分別對應於標準錯誤、標準輸入和標準輸出流。

庫函式

下面是標頭檔案 stdio.h 中定義的函式:

為了更好地理解函式,請按照下面的序列學習這些函式,因為第一個函式中建立的檔案會在後續的函式中使用到。
序號函式 & 描述
1int fclose(FILE *stream)
關閉流 stream。重新整理所有的緩衝區。
2void clearerr(FILE *stream)
清除給定流 stream 的檔案結束和錯誤識別符號。
3int feof(FILE *stream)
測試給定流 stream 的檔案結束識別符號。
4int ferror(FILE *stream)
測試給定流 stream 的錯誤識別符號。
5int fflush(FILE *stream)
重新整理流 stream 的輸出緩衝區。
6int fgetpos(FILE *stream, fpos_t *pos)
獲取流 stream 的當前檔案位置,並把它寫入到 pos。
7FILE *fopen(const char *filename, const char *mode)
使用給定的模式 mode 開啟 filename 所指向的檔案。
8size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
從給定流 stream 讀取資料到 ptr 所指向的陣列中。
9FILE *freopen(const char *filename, const char *mode, FILE *stream)
把一個新的檔名 filename 與給定的開啟的流 stream 關聯,同時關閉流中的舊檔案。
10int fseek(FILE *stream, long int offset, int whence)
設定流 stream 的檔案位置為給定的偏移 offset,引數 offset 意味著從給定的 whence 位置查詢的位元組數。
11int fsetpos(FILE *stream, const fpos_t *pos)
設定給定流 stream 的檔案位置為給定的位置。引數 pos 是由函式 fgetpos 給定的位置。
12long int ftell(FILE *stream)
返回給定流 stream 的當前檔案位置。
13size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
把 ptr 所指向的陣列中的資料寫入到給定流 stream 中。
14int remove(const char *filename)
刪除給定的檔名 filename,以便它不再被訪問。
15int rename(const char *old_filename, const char *new_filename)
把 old_filename 所指向的檔名改為 new_filename。
16void rewind(FILE *stream)
設定檔案位置為給定流 stream 的檔案的開頭。
17void setbuf(FILE *stream, char *buffer)
定義流 stream 應如何緩衝。
18int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
另一個定義流 stream 應如何緩衝的函式。
19FILE *tmpfile(void)
以二進位制更新模式(wb+)建立臨時檔案。
20char *tmpnam(char *str)
生成並返回一個有效的臨時檔名,該檔名之前是不存在的。
21int fprintf(FILE *stream, const char *format, ...)
傳送格式化輸出到流 stream 中。
22int printf(const char *format, ...)
傳送格式化輸出到標準輸出 stdout。
23int sprintf(char *str, const char *format, ...)
傳送格式化輸出到字串。
24int vfprintf(FILE *stream, const char *format, va_list arg)
使用引數列表傳送格式化輸出到流 stream 中。
25int vprintf(const char *format, va_list arg)
使用引數列表傳送格式化輸出到標準輸出 stdout。
26int vsprintf(char *str, const char *format, va_list arg)
使用引數列表傳送格式化輸出到字串。
27int fscanf(FILE *stream, const char *format, ...)
從流 stream 讀取格式化輸入。
28int scanf(const char *format, ...)
從標準輸入 stdin 讀取格式化輸入。
29int sscanf(const char *str, const char *format, ...)
從字串讀取格式化輸入。
30int fgetc(FILE *stream)
從指定的流 stream 獲取下一個字元(一個無符號字元),並把位置識別符號往前移動。
31char *fgets(char *str, int n, FILE *stream)
從指定的流 stream 讀取一行,並把它儲存在 str 所指向的字串內。當讀取 (n-1) 個字元時,或者讀取到換行符時,或者到達檔案末尾時,它會停止,具體視情況而定。
32int fputc(int char, FILE *stream)
把引數 char 指定的字元(一個無符號字元)寫入到指定的流 stream 中,並把位置識別符號往前移動。
33int fputs(const char *str, FILE *stream)
把字串寫入到指定的流 stream 中,但不包括空字元。
34int getc(FILE *stream)
從指定的流 stream 獲取下一個字元(一個無符號字元),並把位置識別符號往前移動。
35int getchar(void)
從標準輸入 stdin 獲取一個字元(一個無符號字元)。
36char *gets(char *str)
從標準輸入 stdin 讀取一行,並把它儲存在 str 所指向的字串中。當讀取到換行符時,或者到達檔案末尾時,它會停止,具體視情況而定。
37int putc(int char, FILE *stream)
把引數 char 指定的字元(一個無符號字元)寫入到指定的流 stream 中,並把位置識別符號往前移動。
38int putchar(int char)
把引數 char 指定的字元(一個無符號字元)寫入到標準輸出 stdout 中。
39int puts(const char *str)
把一個字串寫入到標準輸出 stdout,直到空字元,但不包括空字元。換行符會被追加到輸出中。
40int ungetc(int char, FILE *stream)
把字元 char(一個無符號字元)推入到指定的流 stream 中,以便它是下一個被讀取到的字元。
41void perror(const char *str)
把一個描述性錯誤訊息輸出到標準錯誤 stderr。首先輸出字串 str,後跟一個冒號,然後是一個空格。
42int snprintf(char *str, size_t size, const char *format, ...)
格式字串到 str 中。