<stdio.h> 是 C 标准库中的核心头文件之一,主要用于输入输出(I/O)操作。它提供了一系列函数,用于处理控制台输入输出、文件操作、格式化输入输出等。通过这些函数,程序可以与用户交互或与文件系统进行数据交换。


📖 目录

  1. <stdio.h> 简介
  2. 常用函数
  3. 标准输入输出
  4. 文件操作
  5. 格式化输入输出
  6. 错误处理
  7. 示例代码
  8. 参考资料

1️⃣ <stdio.h> 简介

<stdio.h>(Standard Input/Output)提供了用于输入和输出的函数。它不仅支持基本的字符输入输出,还包括对文件的读写操作。几乎所有的 C 程序都需要使用这个库来实现与用户或文件的交互。

功能

  • 标准输入:从键盘读取输入。
  • 标准输出:向屏幕输出信息。
  • 文件输入输出:处理文件的读写。

2️⃣ 常用函数

📌 标准输入输出函数

  • printf:用于格式化输出到标准输出(通常是屏幕)。
  • scanf:用于从标准输入读取格式化输入(通常是键盘)。
  • putchar:用于输出一个字符到标准输出。
  • getchar:从标准输入读取一个字符。

📌 文件操作函数

  • fopen:打开一个文件。
  • fclose:关闭一个打开的文件。
  • fgetc:从文件中读取一个字符。
  • fputc:向文件写入一个字符。
  • fread:从文件读取数据。
  • fwrite:向文件写入数据。

📌 格式化输入输出函数

  • fprintf:将格式化输出写入指定文件。
  • fscanf:从指定文件读取格式化输入。
  • sprintf:将格式化输出写入字符串。
  • sscanf:从字符串中读取格式化输入。

3️⃣ 标准输入输出

📌 printf

printf 用于将格式化的输出打印到标准输出设备(通常是屏幕)。

原型

int printf(const char *format, ...);

  • 参数
    • format:格式控制字符串,指定输出内容的格式。
    • 后面的参数:格式控制符后面对应的数据。

常用格式控制符

  • %d:整数(十进制)。
  • %f:浮点数。
  • %s:字符串。
  • %c:单个字符。

📌 scanf

scanf 用于从标准输入读取格式化输入数据。

原型

int scanf(const char *format, ...);

  • 参数
    • format:格式控制字符串,指定输入数据的类型。
    • 后面的参数:存储读取数据的变量地址。

常用格式控制符

  • %d:读取整数。
  • %f:读取浮点数。
  • %s:读取字符串(以空格为分隔符)。
  • %c:读取单个字符。

4️⃣ 文件操作

📌 fopen

fopen 用于打开一个文件。

原型

FILE *fopen(const char *filename, const char *mode);

  • 参数
    • filename:文件名。
    • mode:打开文件的模式,如 "r"(只读),"w"(写入),"a"(追加)等。
  • 返回值:返回一个文件指针(FILE*),如果打开失败返回 NULL

📌 fclose

fclose 用于关闭已打开的文件。

原型

int fclose(FILE *stream);

  • 参数stream:文件指针。
  • 返回值:成功返回 0,失败返回 EOF

📌 fgetc

fgetc 用于从文件中读取一个字符。

原型

int fgetc(FILE *stream);

  • 参数stream:文件指针。
  • 返回值:读取的字符(作为 unsigned char 转换为 int),如果遇到文件结束符或错误返回 EOF

📌 fputc

fputc 用于将一个字符写入文件。

原型

int fputc(int c, FILE *stream);

  • 参数
    • c:要写入的字符。
    • stream:文件指针。
  • 返回值:成功返回写入的字符,失败返回 EOF

5️⃣ 格式化输入输出

📌 fprintf

fprintf 用于将格式化的输出写入指定的文件。

原型

int fprintf(FILE *stream, const char *format, ...);

  • 参数
    • stream:目标文件指针。
    • format:格式化字符串。
  • 返回值:成功返回输出的字符数,失败返回负数。

📌 fscanf

fscanf 用于从指定文件读取格式化输入。

原型

int fscanf(FILE *stream, const char *format, ...);

  • 参数
    • stream:目标文件指针。
    • format:格式控制字符串。
  • 返回值:成功读取的项数,失败返回 EOF

📌 sprintf

sprintf 用于将格式化的输出写入字符串。

原型

int sprintf(char *str, const char *format, ...);

  • 参数
    • str:目标字符串。
    • format:格式控制字符串。
  • 返回值:返回写入的字符数。

📌 sscanf

sscanf 用于从字符串中读取格式化输入。

原型

int sscanf(const char *str, const char *format, ...);

  • 参数
    • str:源字符串。
    • format:格式控制字符串。
  • 返回值:成功读取的项数,失败返回 EOF

6️⃣ 错误处理

标准库中的 I/O 函数通常会根据操作的结果返回值来指示是否成功,常见的错误处理方式包括:

  • EOF:许多文件 I/O 函数返回 EOF 表示遇到错误或文件结束。
  • perrorperror 可以用来打印与文件操作相关的错误消息。

原型:

void perror(const char *s);

  • 参数s 是可选的前缀字符串,通常用来指示错误的上下文。

示例

#include <stdio.h>

int main() {
    FILE *file = fopen("nonexistent.txt", "r");
    if (file == NULL) {
        perror("Error opening file");
    }
    return 0;
}

输出

Error opening file: No such file or directory


7️⃣ 示例代码

📌 示例:读取文件并打印内容

该示例展示了如何打开一个文件并读取文件内容。

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");
    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }

    char ch;
    while ((ch = fgetc(file)) != EOF) {
        putchar(ch);  // 输出到屏幕
    }

    fclose(file);
    return 0;
}

输出

(文件内容会显示在屏幕上)

解释

  1. 打开文件 "example.txt"
  2. 使用 fgetc 从文件读取字符,直到文件结束。
  3. 使用 putchar 输出每个字符。
  4. 最后关闭文件。

8️⃣ 参考资料

📖 C 标准库官方文档 – stdio.h
📖 GNU C Library – stdio.h
📖 ISO C 标准(PDF)


📌 总结

<stdio.h> 是 C 标准库中的核心头文件,提供了对输入输出操作的支持。通过它,可以实现与用户和文件系统的交互,包括打印输出、读取输入、文件操作等。它包含了许多功能强大的函数,使得 C 程序能够灵活地处理输入输出任务。