导航

2022-2023-1 20221301 《计算机基础与程序设计》第十四周学习总结

作业信息

这个作业属于哪个课程 <班级的链接>https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
这个作业要求在哪里 <作业要求的链接>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14
这个作业的目标 《C语言程序设计》第13章

教材学习内容总结

文件操作:

  • 二进制文件和文本文件
  • 文件的打开与关闭
  • 按字符读写文件
  • 按格式读写文件
  • 按数据读写文件

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

  • 问题1:一开始没有太搞明白fgets()的用法。
  • 问题1解决方法:通过上网查找,并阅读教材,得到解决。
    虽然用 gets() 时有空格也可以直接输入,但是 gets() 有一个非常大的缺陷,即它不检查预留存储区是否能够容纳实际输入的数据,换句话说,如果输入的字符数目大于数组的长度,gets 无法检测到这个问题,就会发生内存越界,所以编程时建议使用 fgets()。

fgets() 的原型为:

include <stdio.h>

char *fgets(char *s, int size, FILE *stream);

fgets() 虽然比 gets() 安全,但安全是要付出代价的,代价就是它的使用比 gets() 要麻烦一点,有三个参数。它的功能是从 stream 流中读取 size 个字符存储到字符指针变量 s 所指向的内存空间。它的返回值是一个指针,指向字符串中第一个字符的地址。

其中:s 代表要保存到的内存空间的首地址,可以是字符数组名,也可以是指向字符数组的字符指针变量名。size 代表的是读取字符串的长度。stream 表示从何种流中读取,可以是标准输入流 stdin,也可以是文件流,即从某个文件中读取,这个在后面讲文件的时候再详细介绍。标准输入流就是前面讲的输入缓冲区。所以如果是从键盘读取数据的话就是从输入缓冲区中读取数据,即从标准输入流 stdin 中读取数据,所以第三个参数为 stdin。

  • 参考:http://c.biancheng.net/view/235.html

  • 问题2:在编写程序的时候,总是有很多不知道是哪里出问题的小错误。eg:一开始忘记了结构体里的内容都是数组形式的,还在里面定义数组,导致编译不通过。

  • 问题2解决办法:向老师寻求帮助,并结合课本思考。

其他(感悟、思考等,可选)

这一周主要任务就是编写实验,在这个过程中,我发现自己在之前的循、排序等程序的编写上掌握的不错,但是在指针,字符串,结构体这里有点薄弱,需要多加练习,不会的积极思考,及时询问老师同学或者上网上查找。文件操作这里有很多固定格式的东西,包括一些函数名之类的,需要好好记住,以方便日后使用。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 0/0 3/3
第二周 200/200 6/6 18/21
第三周 200/400 10/10 10/31
第四周 300/700 2/12 19/50
第五周 300/1000 3/15 20/70
第六周 300/1300 5/20 15/85
第七周 900/2200 1/21 15/100
第八周 1400/3600 5/25 15/115
第九周 1500/5100 3/27 15/130
第十周 1400/6500 1/28 15/145
第十一周 1500/8000 1/29 15/160
第十二周 1500/9500 1/30 15/175
第十三周 1500/11000 1/31 15/190
第十四周 1500/12500 1/32 15/205

参考资料