2024-2025-1 20241417 《计算机基础与程序设计》第十四周学习总结

2024-2025-1 20241417 《计算机基础与程序设计》第十四周学习总结

作业信息

这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 <作业要求的链接>2024-2025-1计算机基础与程序设计第十四周作业
这个作业的目标 <《C语言程序设计》第13-14章并完成云班课测试>
作业正文 https://www.cnblogs.com/lry666666/p/18637334

教材学习内容总结

  • 文件的基本概念
    • 文件的定义与分类:文件是存储在外部介质上数据的集合,可分为文本文件(以 ASCII 码形式存储,每个字符占一个字节,便于人阅读和编辑)和二进制文件(数据按其在内存中的存储形式原样存储,占用空间可能更小,读写效率更高,适合存储数值型数据等)。
  • 文件指针
    • 定义:FILE是一个结构体类型,文件指针是指向FILE结构体的指针变量,用于标识文件在内存中的位置和状态等信息,通过文件指针来操作文件。例如FILE *fp;声明了一个文件指针fp
  • 文件的打开与关闭
    • 打开文件:使用fopen函数打开文件,其一般形式为fp = fopen("文件名", "文件使用方式");,其中文件使用方式包括"r"(只读)、"w"(只写,若文件不存在则创建,若存在则清空内容)、"a"(追加写,在文件末尾添加数据)、"rb""wb""ab"(二进制文件的相应读写方式)等。如果打开文件成功,fopen函数返回文件指针,否则返回NULL
    • 关闭文件:使用fclose函数关闭文件,fclose(fp);,关闭文件后,文件指针与该文件脱离联系,同时系统会将缓冲区中尚未写入文件的数据写入磁盘,并释放文件指针占用的内存空间。关闭文件操作很重要,可避免数据丢失和资源浪费。
  • 文件的读写操作
    • 字符读写函数
      • fgetc:从指定文件中读取一个字符,如ch = fgetc(fp);,读取成功返回读取到的字符,若读到文件末尾或出错则返回EOF-1)。
      • fputc:向指定文件写入一个字符,如fputc(ch, fp);,写入成功返回写入的字符,出错则返回EOF
    • 字符串读写函数
      • fgets:从文件中读取一个字符串,fgets(str, n, fp);n为要读取的字符个数(包括'\0'),会读取到换行符'\n'(如果文件中有),并将其作为字符串的一部分存储,若成功则返回字符串首地址,若读到文件末尾或出错则返回NULL
      • fputs:将字符串写入文件,fputs(str, fp);,写入字符串str(不包括'\0')到文件中,成功返回非负整数,出错返回EOF
    • 格式化读写函数
      • fscanf:从文件按指定格式读取数据,如fscanf(fp, "%d%s", &num, str);,按照格式字符串从文件中读取数据并存储到相应变量中,返回成功读取的数据项数,若遇到文件末尾或出错则返回EOF
      • fprintf:将数据按指定格式写入文件,fprintf(fp, "%d %s", num, str);,将数据按格式写入文件,返回写入的字符数。
    • 数据块读写函数
      • fread:用于从文件读取数据块到内存,fread(buffer, size, count, fp);buffer是指向存储数据的内存区域的指针,size是每个数据块的字节数,count是要读取的数据块数量,成功则返回实际读取的数据块数量,若遇到文件末尾或出错则返回小于count的值。
      • fwrite:将内存中的数据块写入文件,fwrite(buffer, size, count, fp);,参数含义与fread类似,成功返回实际写入的数据块数量。
  • 文件的定位与随机读写
    • 文件头定位rewind函数将文件指针重新定位到文件开头,rewind(fp);
    • 文件指针移动fseek函数可将文件指针移动到指定位置,fseek(fp, offset, origin);offset是偏移量(字节数),origin指定起始位置(SEEK_SET表示文件开头,SEEK_CUR表示当前位置,SEEK_END表示文件末尾)。例如fseek(fp, 10L, SEEK_SET);将文件指针从文件开头向后移动 10 个字节。
    • 获取当前位置ftell函数用于获取文件指针当前相对于文件开头的偏移字节数,long pos = ftell(fp);,返回值为文件指针当前位置,如果出错则返回-1L

教材学习中的问题和解决过程(先问 AI)

  • 问题 1:不理解文件指针的移动规则
  • 问题 1 解决方案:重新复习 fseek 函数的参数含义。SEEK_SET 表示从文件开头开始计算偏移量,SEEK_CUR 表示从当前文件指针位置计算偏移量,SEEK_END 表示从文件末尾开始计算偏移量(偏移量为负数时向前移动指针,正数时向后移动指针)
  • 问题 2:混淆文本文件和二进制文件的读写方式
  • 问题 2 解决方案:深入理解文本文件和二进制文件的本质区别。文本文件以字符形式存储,每个字符占用一个字节,并且遵循特定的字符编码(如 ASCII、UTF-8 等),适合存储人类可读的文本数据;二进制文件则是按照数据在内存中的存储形式原样存储,没有特定的字符编码限制,更适合存储数值型数据、图像、音频等非文本数据
  • 问题 3:忘记关闭文件导致资源未释放
  • 问题 3 解决方案:养成良好的编程习惯,在每次打开文件后,立即在适当的位置(通常是文件操作完成后)添加 fclose 函数来关闭文件。可以使用代码注释来提醒自己关闭文件的重要性

基于AI的学习

代码调试中的问题和解决过程

  • 问题1:定义字符数组时忘记给'\0'分配位置,导致编译错误
  • 问题1解决方案:回顾并检查课本中字符数组定义
  • 问题2:使用有关字符串的函数时,忘记添加string的头文件
  • 问题2解决方案:提前加好

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 0/2 18/38
第三周 500/1000 1/3 22/60
第四周 300/1300 1/4 30/90
第五周 300/1600 1/5 30/120
第六周 300/1900 1/6 30/150
第七周 300/2200 1/7 30/180
第八周 300/2500 1/8 30/210
第九周 300/2800 1/9 30/240
第十周 300/3100 1/10 30/270
第十一周 300/3400 1/11 30/300
第十二周 300/3700 1/12 30/330
第十三周 300/4000 1/13 30/360
第十四周 300/4300 1/14 30/390
posted @ 2024-12-28 11:32  20241417罗若元  阅读(4)  评论(0编辑  收藏  举报