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 |
|
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/860332.html
如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!