1. 程式人生 > >C 標準庫 –stdio.h 簡介

C 標準庫 –stdio.h 簡介

參考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,後跟一個冒號,然後是一個空格。