天天看點

C 标準庫 - <stdio.h>

<b>stdio .h</b> 頭檔案定義了三個變量類型、一些宏和各種函數來執行輸入和輸出。

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

序号

變量 &amp; 描述

1

<b>size_t </b>

這是無符号整數類型,它是 <b>sizeof</b> 關鍵字的結果。

2

<b>FILE </b>

這是一個适合存儲檔案流資訊的對象類型。

3

<b>fpos_t </b>

這是一個适合存儲檔案中任何位置的對象類型。

下面是頭檔案 stdio.h 中定義的宏:

宏 &amp; 描述

<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 中定義的函數:

為了更好地了解函數,請按照下面的序列學習這些函數,因為第一個函數中建立的檔案會在後續的函數中使用到。

函數 &amp; 描述

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 中。