C 標準庫 stdio.h

簡介

stdio .h 頭文件定義了三個變量類型、一些宏和各種函數來執行輸入和輸出。

庫變量

下面是頭文件 stdio.h 中定義的變量類型:

1:size_t 這是無符號整數類型,它是 sizeof 關鍵字的結果。

2:FILE 這是一個適合存儲文件流信息的對象類型。

3:fpos_t 這是一個適合存儲文件中任何位置的對象類型。

庫宏

下面是頭文件 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
這些宏是在 fseek 函數中使用,用於在一個文件中定位不同的位置。

9:TMP_MAX
這個宏是 tmpnam 函數可生成的獨特文件名的最大數量。

10:stderr、stdin 和 stdout
這些宏是指向 FILE 類型的指針,分別對應於標準錯誤、標準輸入和標準輸出流。

庫函數

下面是頭文件 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,後跟一個冒號,然後是一個空格。

42:int snprintf(char *str, size_t size, const char *format, …)
格式字符串到 str 中。

參考資料

https://www.runoob.com/cprogramming/c-standard-library-stdio-h.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章