2023-2024-1 20231317计算机基础与程序设计第十四周作业

发布时间 2023-12-31 00:52:22作者: 20231317莫善燎

作业信息

这个作业属于哪个课程 <班级的链接>(如2023-2024-1-计算机基础与程序设计
这个作业要求在哪里 <作业要求的链接>(如2023-2024-1计算机基础与程序设计第十四周作业)
这个作业的目标 <《C语言程序设计第十三章》>
作业正文 https://www.cnblogs.com/TerMo/p/17937144 本博客链接

教材学习内容总结

  • 区分二进制文件和文本文件
  • 用C语言打开关闭文件,学会顺序读写和随机读写
  1. 两种文件的不同是存储数据的方式不同。二进制文件在存储数值型数据是以二进制型存储;文本文件是将数值型数据的每一位数字作为一个字符以其ASCII码的形式存储。简单地说,当你存储一段话,文本文件存储时你可以看到你想看到的内容,而二进制文件存储时是"一堆乱码",也许看不懂;

  2. 操作文件时要打开文件对吧:用函数fopen()打开文件,它的原型是这样的

    FILE *fopen (const char *filename ,const cahr *mode);

    其中,FILE是stdio.h中定义的结构体类型,封装文件的有关信息(位置指针、缓冲区等);
    文件打开方式有:

  • "r",只读打开,源文件必须存在,否则打开时会出错;
  • "w",只写打开,创建并打开文件,而已存在的文件将被新文件覆盖。而这个源文件必须存在,否则打开时会出错;
  • "a", 只写打开,位置指针移动到文件末尾,向文件添加数据,源文件数据保留。若文件不存在,则会新建一个文件;
  • "+",与以上字符串组合,读写打开,即可添加数据也可以读取数据;
  • "b",与以上字符串组合,二进制打开;

    我们来以写的方式打开一个demo.txt文件吧:

    搞文件第一件事就是先搞一个文件指针: FILE *fp
    然后打开: fp=fopen("demo.txt","w");
    然后把内容写进文件,多的不说,当你写字符串的时候,其中一条很重要的语句可以是:
    fputc(ch,fp);(这个ch假设是我们已经定义好了的一个字符);
    最后,不要忘记关闭文件:fclose(fp)。

    下面展示一段学生成绩管理系统以文本文件形式写进文件的代码:

void writefile(struct student students[],int n)
{
FILE *file=fopen("student_records.txt","w");
if(file==NULL)
{
printf("无法打开文件\n");
return;
}

for(int i=0; i<n; i++)
{
    fprintf(file, "学生姓名: %s\n", students[i].name);
    fprintf(file, "学生学号: %d\n", students[i].id);
    fprintf(file, "第一科MT成绩: %.2f\n", students[i].scores[0]);
    fprintf(file, "第二科EN成绩: %.2f\n", students[i].scores[1]);
    fprintf(file, "第三科PH成绩: %.2f\n", students[i].scores[2]);
    fprintf(file, "总分: %.2f\n", students[i].totalscore);
    fprintf(file, "平均分: %.2f\n", students[i].average);
    fprintf(file, "\n");
}
fclose(file);

}

教材学习中的问题和解决过程

  • 问题1:打开文件为什么总要检查打开没有?
  • 问题1解决方案:打开文件时需要进行检查是为了确保文件存在并且可以被正确访问。如果文件不存在或者无法被访问,那么尝试打开文件将会失败,并且可能会导致程序出现错误或崩溃。因此,进行打开文件之前的检查是一种良好的编程实践,可以帮助避免潜在的问题。
  • 问题2:我们实现C语言操作文件的意义是什么?
  • 问题2解决方案:C语言操作文件的意义在于可以实现对文件的读取、写入、修改等操作,从而实现对数据的持久化存储和处理。通过C语言操作文件,可以实现数据的输入输出,文件的创建和删除,以及对文件中数据的处理和分析等功能。这对于开发各种类型的应用程序和系统都是非常重要的,比如数据库系统、文本处理工具、图像处理软件等。因此,C语言操作文件的能力可以帮助我们实现对数据的有效管理和处理,从而扩展了C语言的应用领域。

基于AI的学习

  • me:二进制文件是不是更容易实现保密
  • gpt:二进制文件相对于文本文件来说更难以保密,因为二进制文件通常包含的是经过编码的数据,而文本文件中的数据则是以可读的形式存储。虽然二进制文件可以通过加密等手段来保护数据的安全性,但是一旦加密算法被破解,二进制文件中的数据就会暴露出来。因此,要想实现真正的保密,需要在保护数据的同时采取更多的安全措施。
  • me:那相对于文本文件是不是更难看懂文件内容
  • gpt:是的,相对于文本文件,二进制文件更难以直接理解和解读文件内容。文本文件中的数据以可读的字符形式存储,可以直接打开并阅读内容,而二进制文件中的数据以编码的形式存储,需要通过特定的程序或工具来解析和理解其中的内容。因此,对于普通用户来说,二进制文件的内容更难以直接理解和看懂。
    -me:难看懂不就保密了吗?
    -gpt:在某种程度上,确实可以认为难以理解的内容具有一定的保密性。但是仅仅依靠难以理解的程度来保密是不够的,因为一旦相关知识和工具被掌握,这种难以理解的内容也可以被解密或破解。因此,要实现真正的保密,需要采取更多的安全措施,如加密、访问控制等。