这个头文件提供 输入输出 的相关功能。例如打印显示内容,读取命令行输入等。
| 类型 | 标准 | 说明 |
|---|
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* |
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
int age = 25;
float height = 1.75f;
printf("I am %d years old and %.2f meters tall.\n", age, height);
char name[50];
printf("Please enter your name: ");
scanf("%49s", name);
printf("Hello, %s!\n", name);
getchar();
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");
}
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);
}
printf("Enter a character: ");
int ch = getchar();
printf("You entered: ");
putchar(ch);
putchar('\n');
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