stdio.h
(重定向自C file input/output)
C標準函式庫 |
---|
一般 |
杂项 |
<stdio.h>
是C语言为输入输出提供的标准库头文件,其前身是迈克·莱斯克20世纪70年代编写的“可移植输入输出程序库”[1]。
C语言中的所有输入和输出都由抽象的字节流来完成,对文件的访问也通过关联的输入或输出流进行。这一模式随UNIX操作系统而普及,在现代操作系统和编程语言中仍被广泛应用。
头文件内容[编辑]
类型[编辑]
标识符 | 说明 |
---|---|
size_t |
用于表示大小的数据类型 |
FILE |
记录流的信息的数据结构 |
fpos_t |
用于在文件中定位的数据类型 |
宏[编辑]
标识符 | 说明 |
---|---|
NULL |
空指针 |
_IOFBF |
用于控制缓冲方式的参数 |
_IOLBF |
|
_IONBF |
|
BUFSIZ |
setbuf 函数使用的缓冲区大小 |
EOF |
文件结尾标志 |
FOPEN_MAX |
实现保证能够同时打开的文件数量 |
FILENAME_MAX |
实现保证支持的最长文件名的字符数 |
SEEK_CUR |
用于控制文件定位方式的参数 |
SEEK_END |
|
SEEK_SET |
|
TMP_MAX |
实现保证能生成的临时文件名个数 |
标准流[编辑]
标识符 | 说明 |
---|---|
stderr |
标准错误流 |
stdin |
标准输入流 |
stdout |
标准输出流 |
函数[编辑]
类型 | 函数原型 |
---|---|
文件操作 | int remove(const char *filename); |
int rename(const char *old, const char *new); |
|
FILE *tmpfile(void); |
|
char *tmpnam(char *s); |
|
int fclose(FILE *stream); |
|
int fflush(FILE *stream); |
|
FILE *fopen(const char * restrict filename, const char * restrict mode); |
|
FILE *freopen(const char * restrict filename, const char * restrict mode, FILE * restrict stream); |
|
void setbuf(FILE * restrict stream, char * restrict buf); |
|
int setvbuf(FILE * restrict stream, char * restrict buf, int mode, size_t size); |
|
格式化输入输出 | int fprintf(FILE * restrict stream, const char * restrict format, ...); |
int fscanf(FILE * restrict stream, const char * restrict format, ...); |
|
int printf(const char * restrict format, ...); |
|
int scanf(const char * restrict format, ...); |
|
int snprintf(char * restrict s, size_t n, const char * restrict format, ...); |
|
int sprintf(char * restrict s, const char * restrict format, ...); |
|
int sscanf(const char * restrict s, const char * restrict format, ...); |
|
int vfprintf(FILE * restrict stream, const char * restrict format, va_list arg); |
|
int vfscanf(FILE * restrict stream, const char * restrict format, va_list arg); |
|
int vprintf(const char * restrict format, va_list arg); |
|
int vscanf(const char * restrict format, va_list arg); |
|
int vsnprintf(char * restrict s, size_t n, const char * restrict format, va_list arg); |
|
int vsprintf(char * restrict s, const char * restrict format, va_list arg); |
|
int vsscanf(const char * restrict s, const char * restrict format, va_list arg); |
|
字符输入输出 | int fgetc(FILE *stream); |
char *fgets(char * restrict s, int n, FILE * restrict stream); |
|
int fputc(int c, FILE *stream); |
|
int fputs(const char * restrict s, FILE * restrict stream); |
|
int getc(FILE *stream); |
|
int getchar(void); |
|
int putc(int c, FILE *stream); |
|
int putchar(int c); |
|
int puts(const char *s); |
|
int ungetc(int c, FILE *stream); |
|
直接输入输出 | size_t fread(void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream); |
size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream); |
|
文件内定位 | int fgetpos(FILE * restrict stream, fpos_t * restrict pos); |
int fseek(FILE *stream, long int offset, int whence); |
|
int fsetpos(FILE *stream, const fpos_t *pos); |
|
long int ftell(FILE *stream); |
|
void rewind(FILE *stream); |
|
错误处理 | void clearerr(FILE *stream); |
int feof(FILE *stream); |
|
int ferror(FILE *stream); |
|
void perror(const char *s); |
相关库[编辑]
C++引入了iostream
进行输入输出,但仍保留了stdio.h
的功能。
贝尔实验室开发了Sfio库,旨在弥补stdio.h
在功能、速度和安全性上的不足。[2]
参见[编辑]
参考文献[编辑]
- ^ Kernighan, Brian; Pike, Rob. The UNIX Programming Environment. Englewood Cliffs: Prentice Hall. 1984: 200.
- ^ Korn, David G.; Vo, Kiem-Phong. SFIO: Safe/Fast String/File IO. Proc. Summer USENIX Conf. 1991.
- ISO/IEC JTC 1/SC 22. ISO/IEC 9899:2011, Information technology — Programming languages — C.