国际访客建议访问 Primers 编程伙伴 国际版站点 > C 教程 > stdio.h 以获得更好的体验。

# C 语言标准库头文件 stdio.h

请查看 C 语言标准库头文件列表 了解更多相关 API。

这个头文件提供 输入输出 的相关功能。例如打印显示内容,读取命令行输入等。

# 类型

类型 标准 说明
FILE C89 文件 I/O 流,通常不是完整类型,只能使用指针

#

标准 说明
EOF C89 用于表示错误字符的 int 型常量,通常为 -1,本意是文件结束(End-Of-File)
FOPEN_MAX C89 最多可同时打开的文件数量上限
FILENAME_MAX C89 文件名的最大长度(字节)
BUFSIZE C89 默认缓冲区大小
_IOFBF C89 全缓冲模式
_IOLBF C89 行缓冲模式
_IONBF C89 无缓冲模式
SEEK_SET C89 相对文件开头
SEEK_CUR C89 相对当前位置
SEEK_END C89 相对文件末尾
TMP_MAX C89 tmpnam 可以生成的唯一文件名最大数量
TMP_MAX_S C11 tmpnam_s 可以生成的唯一文件名最大数量
L_tmpnam C89 tmpnam 生成的文件名长度(字节)
L_tmpnam_s C11 tmpnam_s 生成的文件名长度(字节)

# 全局变量

全局变量 标准 说明
stdin C89 标准输入,类型为 FILE*
stdout C89 标准输出,类型为 FILE*
stderr C89 标准错误,类型为 FILE*

# 函数

标准 I/O 标准 说明
printf C89 打印标准输出
scanf C89 获取标准输入
putchar C89 向标准输出写入单个字符
puts C89 向标准输出写入字符串
getchar C89 从标准输入读取单个字符
gets C89(在 C11 废弃) 从标准输入读取字符串
gets_s C11 从标准输入读取字符串
错误处理 标准 说明
feof C89 判断是否到达文件流末尾
ferror C89 检查文件流错误
clearerr C89 清除文件流错误
perror C89 打印 errno 中的错误
文件操作 标准 说明
fopen C89 打开文件
fclose C89 关闭文件
tmpfile C89 打开一个临时文件
tmpnam C89 生成一个临时文件名
remove C89 删除文件
rename C89 重命名文件
fseek C89 设置文件流位置
ftell C89 获取文件流位置
rewind C89 设置文件流位置为 0
fflush C89 冲洗缓冲区
setbuf C89 设置缓冲区
setvbuf C89 设置缓冲区和缓冲模式
文件读写 标准 说明
fread C89 读文件
fwrite C89 写文件
fgetc C89 从文件中读取一个字符
fgets C89 从文件中读取一行字符串
fputc C89 向文件中写入一个字符
fputs C89 向文件中写入一个字符串
ungetc C89 向文件中放回一个字符串
TODO:未完成,待更新。

# 推荐阅读

# 示例

#include <stdio.h>  // 包含标准输入输出头文件

int main(void) {
    // 1. 使用 printf 输出到标准输出
    printf("Hello, World!\n");
    
    // 2. 格式化输出
    int age = 25;
    float height = 1.75f;
    printf("I am %d years old and %.2f meters tall.\n", age, height);
    
    // 3. 从标准输入读取数据
    char name[50];
    printf("Please enter your name: ");
    scanf("%49s", name);  // 限制输入长度为49个字符,防止缓冲区溢出
    printf("Hello, %s!\n", name);
    getchar();  // 读取换行符
    
    // 4. 文件操作
    FILE *file = fopen("example.txt", "w");  // 以写入模式打开文件
    if (file != NULL) {
        fprintf(file, "This is written to a file.\n");
        fclose(file);  // 关闭文件
    } else {
        perror("Failed to open file");  // 打印错误信息
    }
    
    // 5. 读取文件内容
    file = fopen("example.txt", "r");
    if (file != NULL) {
        char buffer[100];
        while (fgets(buffer, sizeof(buffer), file) != NULL) {
            printf("File content: %s", buffer);
        }
        fclose(file);
    }
    
    // 6. 使用 putchar 和 getchar
    printf("Enter a character: ");
    int ch = getchar();  // 读取一个字符
    printf("You entered: ");
    putchar(ch);         // 输出一个字符
    putchar('\n');
    
    // 7. 清空输入缓冲区
    while ((ch = getchar()) != '\n' && ch != EOF);  // 清除剩余输入
    
    return 0;
}

运行结果:

Hello, World!
I am 25 years old and 1.75 meters tall.
Please enter your name: planc
Hello, planc!
File content: This is written to a file.
Enter a character: A
You entered: A
本文 更新于: 2025-11-27 09:38:07 创建于: 2025-11-27 09:38:07