C Standard Library 简明教程

C Library - <stdio.h>

stdio.h 头定义了 3 种变量类型、多个宏和多个用于执行输入和输出的函数。

Library Variables

以下是 stdio.h 头中定义的变量类型 −

Sr.No.

Variable & Description

1

size_t 这是无符号整数类型,是 sizeof 关键字的结果。

2

FILE 这是一种适用于存储文件流信息的的 Object 类型。

3

fpos_t 这是一种适用于存储文件中任意位置信息的 Object 类型。

Library Macros

以下是 stdio.h 头中定义的宏 −

Sr.No.

Macro & Description

1

NULL 此宏是空指针常量的值。

2

_IOFBF, _IOLBF 和 * _IONBF*这些宏展开为具有不同值且适合作为 setvbuf 函数的第三个参数的整数常量表达式。

3

BUFSIZ 此宏是整数,表示 setbuf 函数使用的缓冲区大小。

4

EOF 此宏是负整数,表示已达文件结尾。

5

FOPEN_MAX 此宏是整数,表示系统可以保证同时打开的最大文件数。

6

FILENAME_MAX 此宏是整数,表示适合容纳最长可能文件名的 char 数组的最长长度。如果实现没有限制,则此值应为建议的最大值。

7

L_tmpnam 此宏是一个整数,它代表适合保存 tmpnam 函数创建的最长可能临时文件名的最长 char 数组长度。

8

SEEK_CUR, SEEK_END,SEEK_SET 这些宏在 fseek 函数中用于查找文件中的不同位置。

9

TMP_MAX 此宏是 tmpnam 函数可生成的最大唯一文件名数量。

10

stderr, stdin,stdout 这些宏是 FILE 类型的指针,与标准错误、标准输入和标准输出流相对应。

Library Functions

以下是头文件 stdio.h 中定义的函数 -

Sr.No.

Function & Description

1

int fclose(FILE *stream) 关闭流。所有缓冲区都会刷新。

2

void clearerr(FILE *stream) 清除给定流的末尾文件和错误指示符。

3

int feof(FILE *stream) 测试给定流的末尾文件指示符。

4

int ferror(FILE *stream) 测试给定流的错误指示符。

5

int fflush(FILE *stream) 刷新流的输出缓冲区。

6

int fgetpos(FILE *stream, fpos_t *pos) 获取流的当前文件位置并将其写入 pos。

7

FILE *fopen(const char *filename, const char *mode) 使用给定的模式打开由 filename 指向的文件名。

8

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 从给定流读取数据到由 ptr 指向的数组中。

9

FILE *freopen(const char *filename, const char *mode, FILE *stream) 将新文件名与给定的打开流关联,同时关闭流中的旧文件。

10

int fseek(FILE *stream, long int offset, int whence) 将流的文件位置设置为给定的偏移量。参数 offset 表示从给定的 whence 位置偏移的字节数。

11

int fsetpos(FILE *stream, const fpos_t *pos) 将给定流的文件位置设置为给定的位置。参数 pos 是由函数 fgetpos 给出的位置。

12

long int ftell(FILE *stream) 返回给定流的当前文件位置。

13

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 将由 ptr 指向的数组中的数据写入给定的流。

14

int remove(const char *filename) 删除给定的文件名,使其不再可访问。

15

int rename(const char *old_filename, const char *new_filename) 由 old_filename 引用的文件名更改为 new_filename。

16

void rewind(FILE *stream) 将文件位置设置为给定流的开始。

17

void setbuf(FILE *stream, char *buffer) 定义流的缓冲方式。

18

int setvbuf(FILE *stream, char *buffer, int mode, size_t size) 定义流的缓冲方式的另一函数。

19

FILE *tmpfile(void) 以二进制更新模式(wb+)创建一个临时文件。

20

char *tmpnam(char *str) 生成并返回不存在的有效临时文件名。

21

int fprintf(FILE *stream, const char *format, …​) 将格式化的输出发送到流。

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) 使用参数列表将格式化的输出发送到流。

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, …​) 从流中读取格式化的输入。

28

int scanf(const char *format, …​) 从 stdin 读取格式化的输入。

29

int sscanf(const char *str, const char *format, …​) 从字符串中读取格式化的输入。

30

int fgetc(FILE *stream) 从指定的流中获取下一个字符(无符号字符),并前进流的位置指示器。

31

char *fgets(char *str, int n, FILE *stream) 从指定的流中读取一行,并将其存储在 str 指向的字符串中。它将在读取(n-1)个字符、读取换行字符或到达文件结尾时停止,以先到者为准。

32

int fputc(int char, FILE *stream) 将参数 char 指定的字符(无符号字符)写入指定的流,并前进流的位置指示器。

33

int fputs(const char *str, FILE *stream) 将字符串写入指定的流,直到(不包括)空字符。

34

int getc(FILE *stream) 获取指定流中的下一个字符(一个无符号字符)并推进流的位置指示器。

35

int getchar(void) 获取标准输入中的一个字符(一个无符号字符)。

36

char *gets(char *str) 从标准输入中读取一行并将其存储到由 str 指向的字符串中。当读取换行符或达到文件结尾时,它都会停止,以先发生者为准。

37

int putc(int char, FILE *stream) 将参数 char 指定的字符(一个无符号字符)写入指定流并推进流的位置指示器。

38

int putchar(int char) 将参数 char 指定的字符(一个无符号字符)写入标准输出。

39

int puts(const char *str) 将一个字符串写入标准输出,但不包括空字符。在输出中追加一个换行符。

40

int ungetc(int char, FILE *stream) 将字符 char(一个无符号字符)推送到指定流,以便读取下一个字符。

41

void perror(const char *str) 向标准错误输出打印描述性错误消息。首先打印字符串 str,后跟一个冒号,再跟一个空格。