实战解题训练
例题1:文件打开关闭改错 中等
考点定位:fopen/fclose函数 + 打开模式 + 错误处理(考试重点题型)
题目:找出以下程序中的错误并改正(考试常考题型,分值15分)
// 错误程序:写入文件内容
#include <stdio.h>
int main() {
FILE *fp = fopen("test.txt", r);
fputc('A', fp);
fclose();
return 0;
}
错误分析与改正:
- fopen("test.txt", r) → fopen("test.txt", "w") (打开模式必须加引号,写文件需用w模式而非r)
- 未判断fp是否为NULL → 添加:if (fp == NULL) { printf("打开失败"); exit(1); }
- fclose() → fclose(fp) (fclose必须传入文件指针参数)
解题技巧:文件操作改错题检查优先级:①函数参数完整性 ②打开模式合法性 ③错误处理 ④资源释放(fclose)。
例题2:文件读写函数判断 简单
考点定位:顺序读写函数(考试高频题型)
题目:以下哪个函数用于从文件中读取一个字符串?(分值10分)
A. fgetc() B. fgets() C. fputc() D. fprintf()
答案:B
解析:
- fgetc():读取单个字符
- fgets():读取字符串(指定长度)
- fputc():写入单个字符
- fprintf():格式化写入数据
解题技巧:函数名记忆:get(读)、put(写)、c(字符)、s(字符串);组合后:fgetc(读字符)、fgets(读字符串)、fputc(写字符)、fputs(写字符串)。
例题3:文件随机读写编程题 较难
考点定位:fseek函数 + 文件读写(考试压轴题型,分值20分)
题目:编写一个C程序,使用随机读写方式读取文件中第8个字符,要求符合程序设计规范。
参考答案:
// 程序功能:随机读取文件第8个字符
// 符合文件操作规范:打开检查、指针移动、关闭文件
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *fp;
char ch;
// 以只读模式打开文件
fp = fopen("data.txt", "r");
// 检查文件是否打开成功
if (fp == NULL) {
printf("文件打开失败!\n");
exit(1);
}
// 移动文件指针到第8个字符(偏移量7,从开头开始)
fseek(fp, 7, SEEK_SET);
// 读取当前位置字符
ch = fgetc(fp);
printf("文件第8个字符是:%c\n", ch);
// 关闭文件
fclose(fp);
return 0;
}
解题技巧:随机读写编程得分要点:①文件打开+错误检查 ②fseek参数正确(偏移量=目标位置-1) ③读写操作 ④文件关闭;偏移量计算是易错点,第n个字符偏移量为n-1。