<stdio.h>
是 C 标准库中的一个非常重要的头文件,它定义了输入输出(I/O)功能的相关函数。通过 <stdio.h>
,C 程序可以执行各种 I/O 操作,如读取键盘输入、写入文件、输出到屏幕等。
📖 目录
1️⃣ <stdio.h>
简介
<stdio.h>
(Standard Input/Output)头文件提供了用于标准输入和输出操作的函数原型。它定义了与设备、终端、文件的输入输出操作接口,是 C 编程中不可或缺的一部分。<stdio.h>
提供了对屏幕、文件、标准输入(如键盘)和标准输出(如终端或控制台)的访问。
2️⃣ 常用函数
<stdio.h>
包含了许多常用的 I/O 函数,主要分为三类:标准输入输出函数、文件操作函数和格式化输入输出函数。
📌 标准输入输出函数
printf
:用于将格式化输出打印到标准输出(通常是屏幕)。scanf
:用于从标准输入读取格式化输入(通常是键盘)。
📌 文件操作函数
fopen
:打开一个文件。fclose
:关闭已打开的文件。fread
:从文件读取数据。fwrite
:将数据写入文件。fgetc
:从文件中读取一个字符。fputc
:将一个字符写入文件。
📌 格式化输入输出函数
fprintf
:将格式化的输出写入指定文件。fscanf
:从指定文件读取格式化输入。sprintf
:将格式化输出写入字符串。sscanf
:从字符串读取格式化输入。
3️⃣ 标准输入输出
📌 printf
printf
用于将格式化的输出写到标准输出设备(通常是屏幕)。
原型:
int printf(const char *format, ...);
- 参数:
format
:格式控制字符串,指定输出内容的格式。- 后面的参数:格式控制符后面对应的数据。
常用格式控制符:
%d
:整数(十进制)。%f
:浮点数。%s
:字符串。%c
:单个字符。%x
:十六进制整数。
📌 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
表示遇到错误或文件结束。perror
:perror
可以用来打印与文件操作相关的错误消息。
原型:
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;
}
输出:
(文件内容会显示在屏幕上)
解释:
- 打开文件
"example.txt"
。 - 使用
fgetc
从文件读取字符,直到文件结束。 - 使用
putchar
输出每个字符。 - 最后关闭文件。
8️⃣ 参考资料
📖 C 标准库官方文档 – stdio.h
📖 GNU C Library – stdio.h
📖 ISO C 标准(PDF)
📌 总结
<stdio.h>
是 C 标准库中的核心头文件,提供了对输入输出操作的支持。通过它,可以实现与用户和文件系统的交互,包括打印输出、读取输入、文件操作等。它包含了许多功能强大的函数,使得 C 程序能够灵活地处理输入输出任务。
发表回复