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

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十四周作业
这个作业的目标 自学教材《C语言程序设计》第13章并完成云班课测试
作业正文 2024-2025-1学号20241309《计算机基础与程序设计》第十四周学习总结

教材学习内容总结

《C语言程序设计》第十三章:

一、文件基本概念

文件本质:文件是存储于外部介质(如磁盘)的数据集合,C 语言将其视为字符(字节)序列的流式文件。
文件类型:
文本文件:以字符的 ASCII 码形式存储数据,每个字符占一个字节。例如,整数 123 在文本文件中以字符 '1'、'2'、'3' 的 ASCII 码形式存储,可读性强,但存储效率相对较低,转换时可能存在精度损失。
二进制文件:按数据在内存中的存储形式原样存储到文件中。如整数 123 在内存中以二进制补码形式存储,在二进制文件中也以相同的二进制序列存储,存储效率高,适合存储大量数据和对精度要求高的数据,但可读性差。

二、文件指针与操作流程

文件指针:C 语言通过文件指针访问和操作文件,它是指向FILE类型结构体的指针变量,FILE结构体包含文件当前位置、缓冲区状态等信息。
文件操作基本流程:打开文件(获取文件指针)→进行读写等操作→关闭文件(释放资源)。

三、文件打开与关闭

打开函数fopen:FILE *fopen(const char *filename, const char *mode),filename为文件名(含路径),mode指定打开方式。例如,“r” 为只读打开文本文件,“rb” 为只读打开二进制文件。若成功打开,返回文件指针;否则返回NULL。
关闭函数fclose:int fclose(FILE *stream),成功关闭返回 0,否则返回EOF(通常为 -1),关闭文件可防止数据丢失和释放资源。

四、文件读写操作

(一)文本文件读写

字符读写:
fgetc:int fgetc(FILE *stream)从文件读一个字符,到达文件末尾或出错返回EOF。
fputc:int fputc(int c, FILE *stream)向文件写一个字符,成功返回写入字符,否则返回EOF。
字符串读写:
fgets:char *fgets(char *s, int n, FILE *stream)从文件读一行到字符数组s,最多读n - 1个字符,成功返回指针s,否则返回NULL。
fputs:int fputs(const char *s, FILE *stream)将字符串s写入文件,成功返回非负整数,否则返回EOF。
格式化读写:
fscanf:int fscanf(FILE *stream, const char *format,...)从文件按格式读数据,返回成功读取的数据项个数,出错或到文件末尾返回EOF。
fprintf:int fprintf(FILE *stream, const char *format,...)将数据按格式写入文件,成功返回写入字符个数,否则返回负数。

(二)二进制文件读写

数据块读写:
fread:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)从文件读指定长度数据块到内存ptr,size为每个数据项大小,nmemb为数据项个数,返回成功读取的数据项个数。
fwrite:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)将内存ptr中的数据块写入文件,返回成功写入的数据项个数。

五、文件定位

文件位置指针:系统自动维护,指示下一个读写字符位置。文本文件按字符移动,二进制文件可按字节或数据块移动。
定位函数:
fseek:int fseek(FILE *stream, long offset, int whence)移动文件位置指针,offset为偏移量,whence指定起始位置(SEEK_SET、SEEK_CUR、SEEK_END),成功返回 0,否则返回非零值。
ftell:long ftell(FILE *stream)获取文件位置指针当前位置,出错返回 -1L。
rewind:void rewind(FILE *stream)将文件位置指针重定位到文件开头,无返回值。

六、文件错误处理

错误检测:ferror函数检测文件操作错误,int ferror(FILE *stream),出错返回非零值,否则返回 0。
错误清除:clearerr函数清除文件错误标志,void clearerr(FILE *stream),使后续文件操作能正常进行。

基于AI的学习

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

问题1:在本地环境实验时无法成功
解决:发现是因为没有安装编译32位的C程序的安装包,最后选择在蓝桥上进行实验。
问题2:vim编辑器中编辑文件时发现无法输入
解决:经过学习vim编辑器的使用,发现没有进入插入模式
问题3:改动的文件没有生效
解决:发现是因为退出vim时没有使用wq保存退出。
问题4:实验最后总是无法攻击成功
解决:发现是地址计算错误导致无法攻击成功,使用十六进制计算器解决了这个问题

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

其他学习内容:十进制浮点数 转化为IEEE754标准的32浮点数的二进制格式

posted @ 2024-12-28 16:22  灯火忽已晚  阅读(7)  评论(0编辑  收藏  举报