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。
-
问题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 |