首页 > 编程语言 >2024-2025-1 20241417 《计算机基础与程序设计》第十四周学习总结

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

时间:2024-12-28 11:42:16浏览次数:5  
标签:fp 文件 20241417 300 30 2024 2025 字符 指针

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

标签:fp,文件,20241417,300,30,2024,2025,字符,指针
From: https://www.cnblogs.com/lry666666/p/18637334

相关文章

  • 2024 AI Agents,2025将是Agentic系统之年
    2025年将是Agentic系统之年。一切正在就位:ComputerUse、MCP(模型上下文协议)、改进的工具使用。是时候开始考虑构建这些系统了。Anthropic总结了2024年一些最佳实践,并分享了“如何构建有效的智能体(Buildingeffectiveagents)”:在过去的一年中,Anthropic与数十个跨行业的团队......
  • 2024,AI大模型的那些高光时刻~
    英伟达具身智能负责人JimFan大佬发起2024年TopAIMoments征集,说说你心目中的高光时刻~有网友分享了自己的心中AI高光时刻:第一篇论文被@IJCAIconf接受(AutoAgents:arXiv:2309.17288)Karpathy的“让我们复现GPT-2(124M)”-训练了我的第一个GPT级别的模型。karpathy......
  • 2025年NLP神器 - Hugging Face - 预训练模型微调demo
    第一个完整的使用HuggingFaceTransformers对预训练模型进行微调的demoiscoming!整体步骤为:加载数据集loaddatasetfromdatasetsimportload_datasetraw_datasets=load_dataset("glue","mrpc")对数据集做分词tokenizefromtransformersimportAutoModelForSequ......
  • 2024牛客寒假算法基础集训营2(个人训练)
    TokitsukazeandCats思路1对没有只猫我们只需要枚举它的四个方向,看一下有没有猫,如果有他们就会公用一条边,需要注意的是这个方法会重复计算同一条共用的边,最后除2就行代码1#include<bits/stdc++.h>typedefstd::pair<int,int>pii;#defineINF0x3f3f3f3f#defineMOD......
  • 关于IntelliJ IDEA 2024安装激活
      6G5NXCPJZB-eyJsaWNlbnNlSWQiOiI2RzVOWENQSlpCIiwibGljZW5zZWVOYW1lIjoic2lnbnVwIHNjb290ZXIiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJQU0kiLCJmYWxsYm......
  • Java面试题2025
    目录第一章面试技巧篇1、面试过程最关键的是什么?2、面试时该怎么说?1)语言表达清楚2)所述内容不犯错3、面试技巧3.1?常见问题3.2?两个注意事项3.3?自我介绍第二章数据结构、设计模式与手写代码(北京)1、怎么理解时间复杂度和空间复杂度?2、数组和链表结构简单对比?3......
  • 【2024最新Java面试宝典】—— SpringBoot面试题(44道含答案)_java spingboot 面试题
    1.什么是SpringBoot?SpringBoot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,使开发者能快速上手。2.为什么要用SpringBoot快速开发,快速整合,配置简化、内嵌服务容器3.SpringBoot与Sp......
  • 2025新年快乐html代码
    <!DOCTYPEhtml><htmllang="zh-CN"><head>  <metacharset="UTF-8">  <metaname="viewport"content="width=device-width,initial-scale=1.0">  <title>2025蛇年快乐</title>......
  • 2024中国AI大模型场景探索及应用报告,大模型!!!
    随着人工智能技术的飞速发展,AI大模型成为引领行业变革的引擎。2024年,中国AI大模型行业规模已达到147亿元,展现出巨大的潜力和发展空间。行业概况:蓬勃发展的AI大模型AI大模型是指拥有大规模参数的神经网络模型,其训练和应用需要大量算力和高质量数据资源。中国AI大模型行业正......
  • 《面试八股文》之2024年GitHub中文社区Java 领域又一份牛逼笔记
        今天讲讲跳槽。新年即将开启,一些不满现状,被外界的“高薪”“好福利”吸引的人,一般就在这时候毅然决然地跳槽了。跳槽是为了寻求更好的发展,但在跳槽前我们也不能确定下家就是更好的归宿,这就更加需要我们审慎地去对待,不能盲目跳槽。其次,我们离职和跳槽,其中的原因很大......