约 10087 字

约 50 分钟

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

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

#类型

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

#宏

宏标准说明
EOFC89用于表示错误字符的 int 型常量,通常为 -1,本意是文件结束(End-Of-File)
FOPEN_MAXC89最多可同时打开的文件数量上限
FILENAME_MAXC89文件名的最大长度(字节)
BUFSIZEC89默认缓冲区大小
_IOFBFC89全缓冲模式
_IOLBFC89行缓冲模式
_IONBFC89无缓冲模式
SEEK_SETC89相对文件开头
SEEK_CURC89相对当前位置
SEEK_ENDC89相对文件末尾
TMP_MAXC89tmpnam 可以生成的唯一文件名最大数量
TMP_MAX_SC11tmpnam_s 可以生成的唯一文件名最大数量
L_tmpnamC89tmpnam 生成的文件名长度(字节)
L_tmpnam_sC11tmpnam_s 生成的文件名长度(字节)

#全局变量

全局变量标准说明
stdinC89标准输入,类型为 FILE*
stdoutC89标准输出,类型为 FILE*
stderrC89标准错误,类型为 FILE*

#函数

标准 I/O标准说明
printfC89打印标准输出
scanfC89获取标准输入
putcharC89向标准输出写入单个字符
putsC89向标准输出写入字符串
getcharC89从标准输入读取单个字符
getsC89(在 C11 废弃)从标准输入读取字符串
gets_sC11从标准输入读取字符串
错误处理标准说明
feofC89判断是否到达文件流末尾
ferrorC89检查文件流错误
clearerrC89清除文件流错误
perrorC89打印 errno 中的错误
文件操作标准说明
fopenC89打开文件
fcloseC89关闭文件
tmpfileC89打开一个临时文件
tmpnamC89生成一个临时文件名
removeC89删除文件
renameC89重命名文件
fseekC89设置文件流位置
ftellC89获取文件流位置
rewindC89设置文件流位置为 0
fflushC89冲洗缓冲区
setbufC89设置缓冲区
setvbufC89设置缓冲区和缓冲模式
文件读写标准说明
freadC89读文件
fwriteC89写文件
fgetcC89从文件中读取一个字符
fgetsC89从文件中读取一行字符串
fputcC89向文件中写入一个字符
fputsC89向文件中写入一个字符串
ungetcC89向文件中放回一个字符串

#推荐阅读

#示例

#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

更新: 2026/1/19

作者: PlanC

创建: 2025/6/16