构造函数实现通过文件读取和储存分数

#include 
#include 

#define FILENAME "最高得分记录.txt"  // 定义文件名常量

int max = 0;  // 全局变量,存储最高分
int grade = 0;  // 全局变量,存储当前得分

// 从文件读取最高分
void ReadGrade() {
    FILE* pf = fopen(FILENAME, "r");  // 尝试以只读模式打开文件
    if (pf == NULL) {
        // 文件不存在,创建新文件并写入初始值 0
        pf = fopen(FILENAME, "w");
        if (pf == NULL) {
            printf("无法创建文件!\\n");
            exit(1);  // 如果文件无法创建,程序退出
        }
        fwrite(&max, sizeof(int), 1, pf);  // 写入初始值 0
        fclose(pf);  // 关闭文件
        return;  // 无需继续读取
    }

    // 文件存在,读取最高分
    fseek(pf, 0, SEEK_SET);  // 将文件指针移动到文件开头
    fread(&max, sizeof(int), 1, pf);  // 从文件中读取最高分
    fclose(pf);  // 关闭文件
}

// 更新最高分到文件
void WriteGrade() {
    FILE* pf = fopen(FILENAME, "w");  // 以写模式打开文件
    if (pf == NULL) {
        printf("保存最高得分记录失败\\n");
        exit(1);  // 如果文件无法打开,程序退出
    }
    fwrite(&grade, sizeof(int), 1, pf);  // 将当前得分写入文件
    fclose(pf);  // 关闭文件
}

int main() {
    // 初始化变量
    grade = 100;  // 假设当前得分为 100

    // 读取最高分
    ReadGrade();
    printf("当前最高分: %d\\n", max);

    // 更新最高分
    if (grade > max) {
        max = grade;  // 更新最高分
        WriteGrade();  // 将新的最高分写入文件
        printf("新的最高分已保存: %d\\n", max);
    }

    return 0;
}

FILE* pf:

  • 定义了一个指向 FILE 类型的指针 pfFILE 是 C 标准库中用于表示文件流的结构体类型,用于文件操作。

fopen(FILENAME, "w")

  • 以只读的方式打开FILENAME (这里是自己定义的文件名)

pf = fopen(FILENAME, "w")

  • 当文件不存在时,尝试以写模式("w")打开文件。

"w" 模式表示:

  • 如果文件不存在,则创建一个新文件。
  • 如果文件已存在,则清空文件内容。

如果文件再次不存在,说明写模式没有创建出文件。

fwrite(&max, sizeof(int), 1, pf)

  • 函数原型size_t fwrite(const void* ptr, size_t size, size_t count, FILE* stream);*ptr写入stream 文件中,size_t size 指每个数据项大小sizeof(int或其他) sizeof 是计算字节的。size_t count 指写入文件的数据项数量。
  • 这里指当文件成功创建后,将0写入文件中初始化

fseek(pf, 0, SEEK_SET)

  • 函数原型int fseek(FILE *stream, long offset, int whence);
  • stream:指向 FILE 结构的指针,表示要操作的文件流。
  • offset:偏移量,表示要移动的字节数。
  • whence:指定偏移量的基准位置,可以是以下值之一:
    • SEEK_SET:从文件开头开始计算偏移量。
    • SEEK_CUR:从当前文件指针位置开始计算偏移量。
    • SEEK_END:从文件末尾开始计算偏移量。

这里指将指针地址移动到文件开头

fread(&max, sizeof(int), 1, pf)

读文件与写文件的形式相似

你可能感兴趣的:(算法)