C 标准库 <stdio.h> 完整函数清单(官方标准 + 常用全部函数)
严格按照 C17 标准 ,穷举所有 <stdio.h> 函数 ,包含:
函数名 + 函数原型 + 功能说明,纯表格、无废话、一次性给全。
📋 标准 <stdio.h> 完整函数表(共 31 个)
| 序号 | 函数名 | 函数原型 | 功能说明 |
|---|---|---|---|
| 1 | printf |
int printf(const char *format, ...); |
格式化输出到控制台 |
| 2 | fprintf |
int fprintf(FILE *stream, const char *format, ...); |
格式化输出到指定文件流 |
| 3 | sprintf |
int sprintf(char *str, const char *format, ...); |
格式化输出到字符串 |
| 4 | snprintf |
int snprintf(char *str, size_t size, const char *format, ...); |
安全格式化字符串(带长度限制) |
| 5 | scanf |
int scanf(const char *format, ...); |
从控制台格式化输入 |
| 6 | fscanf |
int fscanf(FILE *stream, const char *format, ...); |
从文件流格式化输入 |
| 7 | sscanf |
int sscanf(const char *str, const char *format, ...); |
从字符串格式化输入 |
| 8 | fopen |
FILE *fopen(const char *filename, const char *mode); |
打开文件 |
| 9 | fclose |
int fclose(FILE *stream); |
关闭文件 |
| 10 | fgetc |
int fgetc(FILE *stream); |
从文件读取一个字符 |
| 11 | fgets |
char *fgets(char *str, int num, FILE *stream); |
从文件读取一行字符串 |
| 12 | fputc |
int fputc(int char, FILE *stream); |
写入一个字符到文件 |
| 13 | fputs |
int fputs(const char *str, FILE *stream); |
写入字符串到文件 |
| 14 | getc |
int getc(FILE *stream); |
从流读取字符(宏/函数) |
| 15 | getchar |
int getchar(void); |
从标准输入读取一个字符 |
| 16 | putc |
int putc(int char, FILE *stream); |
写入字符到流(宏/函数) |
| 17 | putchar |
int putchar(int char); |
输出一个字符到控制台 |
| 18 | puts |
int puts(const char *str); |
输出字符串并自动换行 |
| 19 | fread |
size_t fread(void *ptr, size_t size, size_t count, FILE *stream); |
二进制读取文件数据 |
| 20 | fwrite |
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream); |
二进制写入文件数据 |
| 21 | fseek |
int fseek(FILE *stream, long offset, int whence); |
移动文件指针位置 |
| 22 | ftell |
long ftell(FILE *stream); |
获取当前文件指针位置 |
| 23 | rewind |
void rewind(FILE *stream); |
将文件指针重置到开头 |
| 24 | fflush |
int fflush(FILE *stream); |
刷新缓冲区,强制写入 |
| 25 | feof |
int feof(FILE *stream); |
判断是否到达文件末尾 |
| 26 | ferror |
int ferror(FILE *stream); |
判断文件流是否出错 |
| 27 | clearerr |
void clearerr(FILE *stream); |
清除文件流的错误标记 |
| 28 | remove |
int remove(const char *filename); |
删除文件 |
| 29 | rename |
int rename(const char *oldname, const char *newname); |
重命名文件 |
| 30 | tmpfile |
FILE *tmpfile(void); |
创建临时文件(自动删除) |
| 31 | tmpnam |
char *tmpnam(char *str); |
生成唯一临时文件名 |
✅ 重要说明
- 这是 C 标准里
<stdio.h>的全部函数,一个不多、一个不少。 - 没有隐藏函数、没有扩展函数,全部 31 个。
- 所有原型严格遵循 C17 标准。
- 在任何编译器(GCC、Clang、MSVC)里看到的
<stdio.h>都不会超出这个表。
stdio.h 高频必记15个函数速记表(够用一辈子,日常C编程全覆盖)
只留工作/学习必考最常用15个,原型+作用+一句话记忆,表格精简好背。
| 序号 | 函数名 | 函数原型 | 核心功能 | 速记口诀 |
|---|---|---|---|---|
| 1 | printf | int printf(const char *fmt, ...); |
格式化输出到屏幕 | 打印就用printf |
| 2 | scanf | int scanf(const char *fmt, ...); |
从键盘格式化输入 | 键盘读入用scanf |
| 3 | getchar | int getchar(void); |
读单个键盘字符 | 单个字符回车读 |
| 4 | putchar | int putchar(int c); |
输出单个字符到屏幕 | 单个字符往外打 |
| 5 | puts | int puts(const char *s); |
输出字符串自动换行 | 字符串换行直接用 |
| 6 | fopen | FILE *fopen(const char *file, const char *mode); |
打开文件获得文件指针 | 操作文件先打开 |
| 7 | fclose | int fclose(FILE *fp); |
关闭文件 | 用完文件必关闭 |
| 8 | fgets | char *fgets(char *buf, int n, FILE *fp); |
安全读取一行字符串 | 读行防溢出用fgets |
| 9 | fputs | int fputs(const char *s, FILE *fp); |
向文件写入字符串 | 字符串写入文件 |
| 10 | fread | size_t fread(void *p, size_t s, size_t cnt, FILE *fp); |
二进制读文件 | 二进制读用fread |
| 11 | fwrite | size_t fwrite(const void *p, size_t s, size_t cnt, FILE *fp); |
二进制写文件 | 二进制写用fwrite |
| 12 | fseek | int fseek(FILE *fp, long off, int origin); |
移动文件读写指针 | 偏移定位用fseek |
| 13 | rewind | void rewind(FILE *fp); |
文件指针回到开头 | 指针归位用rewind |
| 14 | fflush | int fflush(FILE *fp); |
刷新缓冲区,强制落盘 | 缓冲刷出用fflush |
| 15 | feof | int feof(FILE *fp); |
判断是否读到文件末尾 | 判断结尾用feof |
额外极简分类记忆( 不混淆)
- 控制台输入输出:printf、scanf、getchar、putchar、puts
- 文件基础操作:fopen、fclose
- 文本读写:fgets、fputs
- 二进制读写:fread、fwrite
- 文件指针/缓冲:fseek、rewind、fflush、feof
背会这15个,大学C语言、单片机开发、嵌入式文件操作、日常刷题 完全够用,剩下那些冷门函数基本一辈子用不上。