在C语言开发中,读取文件是最基础也最容易出错的操作之一。合理使用标准库函数并处理好各种异常情况,才能保证程序稳定运行。

一、打开文件与基本读取方式
C语言通过fopen打开文件,它返回FILE指针。若返回NULL表示打开失败。
1. 文本行读取
使用fgets可以按行读取文本文件,适合配置文件或日志。
#include <stdio.h>
int main() {
FILE *fp = fopen("test.txt", "r");
if (fp == NULL) {
perror("打开文件失败");
return 1;
}
char buf[256];
while (fgets(buf, sizeof(buf), fp) != NULL) {
printf("%s", buf);
}
fclose(fp);
return 0;
}
2. 二进制块读取
用fread可读取任意二进制数据,比如图片或结构体。
#include <stdio.h>
int main() {
FILE *fp = fopen("data.bin", "rb");
if (fp == NULL) {
perror("打开二进制文件失败");
return 1;
}
unsigned char data[128];
size_t n = fread(data, 1, sizeof(data), fp);
printf("实际读取字节数: %zun", n);
fclose(fp);
return 0;
}
二、常见的错误处理技巧
文件操作随时可能失败,必须检查返回值并结合errno判断原因。
- 打开后立刻判断FILE指针是否为NULL
- 读完后用
feof和ferror区分是读到末尾还是出错 - 用perror或strerror打印可读的错误信息
判断读取结束与错误
#include <stdio.h>
int main() {
FILE *fp = fopen("test.txt", "r");
if (!fp) return 1;
char c;
while (fread(&c, 1, 1, fp) == 1) {
putchar(c);
}
if (ferror(fp)) {
printf("读取过程发生错误n");
} else if (feof(fp)) {
printf("已正常读到文件末尾n");
}
fclose(fp);
return 0;
}
三、小结
掌握C语言文件读取,核心在于选对函数、检查每一次返回值、及时处理错误。养成这些习惯,能大幅减少线上故障。