#C 语言标准库头文件 stdio.h
这个头文件提供 输入输出 的相关功能。例如打印显示内容,读取命令行输入等。
#类型
| 类型 | 标准 | 说明 |
|---|---|---|
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 | 从标准输入读取字符串 |
| 文件操作 | 标准 | 说明 |
|---|---|---|
| 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 | 向文件中放回一个字符串 |
#推荐阅读
#示例
#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