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

news/2024/12/15 15:10:04/文章来源:https://www.cnblogs.com/118qa/p/18608015

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十二周作业
这个作业的目标 复习巩固前面所学的内容
作业正文 https://www.cnblogs.com/118qa/p/18608015
教材学习内容总结
一、文件的基本概念
文件是存储在外部介质(如磁盘)上的数据集合,可以把它看作是程序与外部存储设备之间进行数据传输的桥梁。在 C 语言中,文件分为文本文件(以 ASCII 码形式存储字符,便于阅读)和二进制文件(以二进制形式存储数据,更紧凑高效)。
二、文件指针
定义:文件指针是指向一个结构体类型(FILE 类型)的指针变量,用于标识文件在内存中的相关信息以及操作文件的位置等。例如:FILE *fp;就定义了一个名为 fp 的文件指针。
作用:通过文件指针来操作文件,调用相关函数实现诸如打开、读写、关闭文件等操作,它就像是操控文件的一个把手。
三、文件的打开与关闭
打开文件:使用fopen函数来打开文件,其一般格式为FILE *fp = fopen("文件名", "文件使用方式");。“文件名” 要包含完整路径(若在当前目录可直接写文件名),“文件使用方式” 常见的有 “r”(只读方式打开文本文件)、“w”(只写方式打开文本文件,若文件存在则清空内容,不存在则创建)、“a”(追加方式打开文本文件,在文件末尾添加内容)、“rb”“wb”“ab”(对应二进制文件的读、写、追加操作)等。例如:FILE *fp = fopen("test.txt", "r");就是以只读方式打开当前目录下名为 “test.txt” 的文本文件。
关闭文件:当文件使用完毕后,务必用fclose函数关闭文件,格式为fclose(fp);(fp 为已打开文件的文件指针)。及时关闭文件可以避免数据丢失、释放相关系统资源等。
四、文件的读写操作
字符读写:
读字符:使用fgetc函数从指定文件中读取一个字符,例如char ch = fgetc(fp);(fp 为已打开的文件指针),它会返回读取到的字符,若读到文件末尾则返回EOF(值为 -1)。
写字符:通过fputc函数向文件写入一个字符,比如fputc('A', fp); 会把字符‘A’写入到由 fp 指向的文件中。
字符串读写:
读字符串:fgets函数用于从文件中读取一行字符串(遇到换行符或文件末尾或读取了指定长度 - 1 个字符就停止),其格式一般为char *fgets(char *s, int n, FILE *fp);,s 是存放读取字符串的字符数组,n 是最多读取的字符个数,fp 为文件指针。例如:char str[100]; fgets(str, 100, fp);。
写字符串:fputs函数可将字符串写入文件,格式如fputs("Hello", fp);,会把 “Hello” 字符串(不包含字符串结束标志‘\0’)写入到 fp 指向的文件中。
格式化读写:
读格式化数据:类似scanf函数的功能,不过针对文件操作,fscanf函数按照指定格式从文件中读取数据,例如fscanf(fp, "%d %s", &num, name);从 fp 指向的文件中按格式读取一个整数和一个字符串分别存入 num 变量和 name 字符数组中。
写格式化数据:与printf函数对应,fprintf函数按照给定格式将数据写入文件,比如fprintf(fp, "%d %s", 10, "test");会把整数 10 和字符串 “test” 按格式写入 fp 指向的文件中。
数据块读写:
读数据块:fread函数用于从文件中读取一块数据,格式为size_t fread(void *ptr, size_t size, size_t count, FILE *fp);,ptr 是存放读取数据的内存地址,size 是每个数据项的字节大小,count 是要读取的数据项个数,fp 是文件指针。例如读取一个结构体数组的数据可以这样操作。
写数据块:fwrite函数则相反,用于把一块数据写入文件,其参数含义和fread类似,比如将一个结构体数组的数据写入文件可使用fwrite。
五、文件定位
rewind 函数:能使文件指针重新定位到文件开头,格式为rewind(fp);(fp 为文件指针),方便重新从头读写文件。
fseek 函数:可以按照指定的偏移量和起始位置来移动文件指针,格式为fseek(fp, offset, origin);,fp 是文件指针,offset 是偏移的字节数(正数向前、负数向后移动),origin 是起始位置(如SEEK_SET表示文件开头、SEEK_CUR表示当前位置、SEEK_END表示文件末尾)。例如fseek(fp, 10L, SEEK_SET);会将文件指针从文件开头向后移动 10 个字节。
ftell 函数:用于获取文件指针当前相对于文件开头的位置(返回字节数),格式为ftell(fp);(fp 为文件指针),可以配合其他定位函数使用,了解文件指针所处的具体位置情况。
六、文件操作的错误处理
在文件操作过程中,可能会出现诸如文件不存在、权限不足等各种错误情况。一般可以通过检查函数返回值(如fopen返回NULL就表示打开失败)以及使用ferror函数(用于检测文件操作中是否发生错误,若有错误返回非 0 值)、clearerr函数(用于清除文件错误标志)等方式来进行错误处理,确保程序对文件操作的稳定性和可靠性。
教材学习中的问题和解决过程(先问 AI)
问题:只写方式("w")的选择情况
AI:当需要创建一个全新的文件来存储数据时,“w” 模式是很好的选择。例如,你要创建一个文本文件来记录用户的登录信息,包括用户名和密码。可以使用以下代码:

  • 上述代码定义了一个文件指针fp,以“w”模式打开(如果不存在就创建)名为“login_info.txt”的文件。如果打开文件成功,就使用fprintf函数将用户名和密码信息写入文件,最后关闭文件。
  1. 覆盖原有文件内容重新写入
    • 当你确定要丢弃文件原有的所有内容,重新写入新的数据时,“w”模式也适用。比如,有一个记录成绩的文件,每次考试后都需要更新成绩,而且不需要保留之前的成绩记录,就可以使用“w”模式。假设成绩数据存储在一个结构体数组中,代码示例如下:
    #include <stdio.h>
    struct Student {char name[20];int score;
    };
    int main()
    {FILE *fp;struct Student students[3] = {{"Alice", 90}, {"Bob", 85}, {"Charlie", 95}};int i;fp = fopen("scores.txt", "w");if (fp == NULL){perror("Error opening file");return 1;}for (i = 0; i < 3; i++){fprintf(fp, "%s %d\n", students[i].name, students[i].score);}fclose(fp);return 0;
    }
    

这里以 “w” 模式打开 “scores.txt” 文件,循环将新的学生成绩数据写入文件,原文件如果有内容会被清空后再写入新数据。
不过,在使用 “w” 模式时需要特别注意,因为它会无条件地清空文件内容。如果不小心用 “w” 模式打开了一个包含重要数据的文件,可能会导致数据丢失。所以在实际操作中,一定要谨慎确认文件操作的目的和要求是否与 “w” 模式的特性相匹配。
基于AI的学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853303.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Three.js案例-360全景房看

在 360 看房功能中,我们需要在浏览器中创建一个类似虚拟现实的场景,使得用户能够查看环境的每一个角落。这一功能的实现本质上是利用 球体映射技术,即通过将全景图作为纹理贴图映射到一个反向的球体上,用户可以通过旋转视角来“环顾四周”。 我们先来看一下效果 ![file](Ma…

性能测试-内存溢出时的分析工具使用

下载内存分析工具地址:https://eclipse.dev/mat/downloads.phphp)下载对应的版本,我这里使用的windows的就下载windows版本的包,下载完成后解压配置启动时的jdk的依赖,目前1.15.0版本的需要jdk17以上,我们在启动时需要手工修改MemoryAnalyzer.ini文件,添加指定的jdk的本地…

性能测试-jvm监控工具jivsualvm

官方网站下载:https://visualvm.github.io/download.html下载zip文件解压到本地后,需要修改启动对应的系统环境的jdk的地址,visualvm_2110\etc 的目录下的 visualvm.conf 文件,配置当前环境的jdkhome后保存visualvm_2110\bin目录下,点击 visualvm.exe 启动程序安装GC插件 …

鲜花:16。

又老了一岁了。 一下子就沧桑了许多。“低沉-狂喜-低沉-狂喜”的循环往复,终究是走向疯癫。 接连三次的挫败,几乎毁了我的一切。 终究是自己不够成熟导致的。 生日,很想哭。 失败,会更多。

性能测试-jvm监控工具jconsole

在jdk的bin目录下,运行jconsole.exe 程序可以打开工具在使用 java 命令启动服务时 添加如下参数 -Dcom.sun.management.jmxremote # 启用 jmx -Djava.rmi.server.hostname=10.0.0.100 # 运行的服务器ip -Dcom.sun.management.jmxremo…

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

2024-2025-1 20241417 《计算机基础与程序设计》第十二周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>2024-2025-1计算机基础与程序设计第十二周作业这个作业的目标 <复习前…

PbootCMS中如何让后台输入的换行符在前台正确显示?

在PbootCMS中,如果你在后台输入的内容中包含换行符(如 <br>),但前台显示时这些换行符被当作普通文本输出(例如显示为 <br>),你可以通过使用格式化标签来解决这个问题。具体做法是在调用内容的标签中添加 decode=1 参数。例如,如果你原本的代码是 {sort:sub…

如何在PbootCMS中获取搜索页的关键词和搜索结果数量?

在PbootCMS中,你可以通过特定的标签来获取搜索页的关键词和搜索结果的数量。以下是如何使用这些标签的详细说明和一些扩展建议:获取搜索关键词:在搜索页模板search.html中,使用标签{$get.keyword}来获取用户输入的搜索关键词。 例如:html<h1>搜索结果:{$get.keywor…

PbootCMS后台登录验证码看不清怎么办?

在使用PbootCMS时,有时会遇到后台登录验证码看不清的问题。这通常是由于PHP版本不兼容导致的。以下是如何解决这一问题的详细步骤和注意事项。问题原因分析:PHP版本不支持:验证码看不清的问题通常是由于服务器上的PHP版本不支持PbootCMS的验证码生成功能。不同版本的PHP对某…

VS2022 配置openCV方法

第一步下载opencv库解压出来这里不做过多讲解第二步配置环境变量 %path%\build\x64\vc16\bin %path%这个替换成自己的路径 然后打开项目属性设置点击VC++目录 链接器、输入、附件依赖分别添加 前面的是我自己的目录 换成你们自己目录即可 第一步添加 库目录D:\Opencv\ope…

WPF TreeView实现固定表头

1、在WPF中TreeView默认不支持固定表头的我们可以修改样式实现固定表头新建一个TreeListView类 然后继承TreeView代码如下public class TreeListView : TreeView,IDisposable{public TreeListView(){//this.Loaded += TreeListView_Loaded;//this.SizeChanged += TreeListView_…

居家徒手健身

居家徒手健身 力竭组,组间歇2min,动作变形算力竭为一组 第一天:胸+三头 动作: 宽距俯卧撑6组(胸外延) 标准俯卧撑4组胸整体 钻石俯卧撑4组(胸中缝) 板凳臂屈伸4~8组(三头) 第二天:肩 +腿 动作: 折刀俯卧撑6~10组(肩中束) 腰间俯卧撑4~6组 (肩前束) 弹力绳深蹲6组…