"文件"考纲要求

核心考点 - 文件的定义及分类

高频考点:文件定义、文本文件与二进制文件区别(必考)
  • 了解文件的定义:存储在外部介质上的数据集合,按名存取
  • 了解文件的分类:按存储形式分为文本文件和二进制文件
  • 理解文本文件特征:以字符编码存储,可直接阅读
  • 理解二进制文件特征:以二进制形式存储,不可直接阅读,存储效率高

核心考点 - 文件的打开及关闭

高频考点:fopen函数、fclose函数、打开模式(必考)
  • 了解文件打开函数fopen():格式为FILE *fp = fopen("文件名", "打开模式")
  • 了解文件关闭函数fclose():格式为fclose(fp),必须关闭避免资源泄漏
  • 掌握常用打开模式:r(只读)、w(只写)、a(追加)、rb(二进制只读)等
  • 理解文件打开失败的处理:fopen返回NULL时表示打开失败

核心考点 - 文件的顺序读写

高频考点:字符/字符串/格式化读写函数(高频)
  • 了解字符读写函数:fgetc()(读字符)、fputc()(写字符)
  • 了解字符串读写函数:fgets()(读字符串)、fputs()(写字符串)
  • 了解格式化读写函数:fscanf()(格式化读)、fprintf()(格式化写)
  • 理解顺序读写特征:从文件开头到结尾按顺序读写,文件指针自动后移

核心考点 - 文件的随机读写

高频考点:文件指针定位、fseek函数、ftell函数(必考)
  • 了解随机读写概念:可直接读写文件任意位置的数据
  • 掌握fseek函数:格式为fseek(fp, 偏移量, 起始位置),用于移动文件指针
  • 掌握ftell函数:返回文件指针当前位置(相对于文件开头的字节数)

高频考点精讲

考点1:文件的定义及分类(必考)

考试频次:每次必考 | 分值占比:10-15分

核心要点:掌握文件定义,区分文本文件和二进制文件的本质差异,是概念题核心考点。

// 文件分类对比说明
// 1. 文本文件:存储字符编码(如ASCII),例:"123"存储为'1','2','3'三个字符
// 2. 二进制文件:存储二进制数据,例:整数123存储为0x7B(一个字节)
// 文本文件可记事本打开,二进制文件需专用软件解析
解题技巧:考试常考分类判断,记住“文本文件可读、二进制文件高效”的核心特征,区分存储形式是关键。

考点2:文件的打开及关闭(必考)

考试频次:每次必考 | 分值占比:15-20分

核心要点:掌握fopen/fclose函数格式和打开模式,是改错题、编程题的核心考点。

// 规范的文件打开关闭示例
#include <stdio.h>
#include <stdlib.h>

int main() {
    // 打开文件:只读模式打开文本文件
    FILE *fp = fopen("test.txt", "r");
    // 判断文件是否打开成功(必考检查)
    if (fp == NULL) {
        printf("文件打开失败!\n");
        exit(1); // 退出程序
    }
    printf("文件打开成功!\n");
    // 关闭文件(必须执行)
    fclose(fp);
    return 0;
}
解题技巧:改错题优先检查:①fopen参数顺序(文件名在前,模式在后) ②打开模式引号遗漏 ③未判断fp是否为NULL ④遗漏fclose ⑤打开模式使用错误(如写文件用r模式)。

考点3:文件的顺序读写(高频)

考试频次:85%考题涉及 | 分值占比:15-25分

核心要点:掌握字符/字符串/格式化读写函数的使用格式,是编程题基础考点。

// 1. 字符读写:fputc写字符,fgetc读字符
char ch = 'A';
fputc(ch, fp); // 向文件写入字符'A'
ch = fgetc(fp); // 从文件读取一个字符

// 2. 字符串读写:fputs写字符串,fgets读字符串
char str[100] = "Hello File";
fputs(str, fp); // 写入字符串
fgets(str, 100, fp); // 读取最多99个字符到str

// 3. 格式化读写:fprintf写,fscanf读
int num = 100;
fprintf(fp, "num = %d", num); // 格式化写入
fscanf(fp, "num = %d", &num); // 格式化读取
解题技巧:函数记忆口诀:fgetc/fputc(字符)、fgets/fputs(字符串)、fscanf/fprintf(格式化);参数顺序:读函数是“文件指针在最后”,写函数是“文件指针在第二个”。

考点4:文件的随机读写(必考)

考试频次:每次必考 | 分值占比:10-15分

核心要点:掌握fseek函数的参数含义和使用场景,是改错题、编程题的核心考点。

// 文件随机读写核心函数使用示例
#include <stdio.h>

int main() {
    FILE *fp = fopen("data.txt", "r");
    if (fp == NULL) exit(1);
    // fseek函数:移动文件指针
    // 格式:fseek(文件指针, 偏移量, 起始位置)
    // 起始位置:SEEK_SET(0,文件开头)、SEEK_CUR(1,当前位置)、SEEK_END(2,文件末尾)
    fseek(fp, 5, SEEK_SET); // 移动到文件开头后第5个字节
    // ftell函数:获取当前指针位置
    long pos = ftell(fp); // pos = 5
    printf("当前指针位置:%ld\n", pos);
    // rewind函数:重置指针到开头
    rewind(fp); // 等价于fseek(fp, 0, SEEK_SET)
    fclose(fp);
    return 0;
}
解题技巧:fseek参数记忆:“指针、偏移、起始位”;起始位置数值记忆:0开头、1当前、2末尾;偏移量为正向后移,为负向前移(需保证不越界)。

实战解题训练

例题1:文件打开关闭改错 中等

考点定位:fopen/fclose函数 + 打开模式 + 错误处理(考试重点题型)

题目:找出以下程序中的错误并改正(考试常考题型,分值15分)

// 错误程序:写入文件内容
#include <stdio.h>
int main() {
    FILE *fp = fopen("test.txt", r);
    fputc('A', fp);
    fclose();
    return 0;
}

错误分析与改正

  1. fopen("test.txt", r) → fopen("test.txt", "w") (打开模式必须加引号,写文件需用w模式而非r)
  2. 未判断fp是否为NULL → 添加:if (fp == NULL) { printf("打开失败"); exit(1); }
  3. 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。

文件考点闯关游戏(满分100分)

当前关卡: 1/10
得分: 0/100
1关 - 高频考点

C语言中,文件按存储形式分为哪两类?

恭喜你完成所有考点关卡!

你的最终得分是: 0/100

得分等级:

你已经掌握了文件的核心考点!