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

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

时间:2024-12-28 22:11:02浏览次数:5  
标签:文件 函数 2024 2025 内存 使用 结构 20241307 指针

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 ([2024-2025-1计算机基础与程序设计第十四周作业]
这个作业的目标
作业正文 2024-2025-1 学号20241307《计算机基础与程序设计》第十四周学习总结

教材学习内容总结

C语言程序设计第十三章和第十四章的总结:
第十三章:文件操作

  1. 文件的打开与关闭
    • 使用fopen()函数打开文件,它接受文件名和模式作为参数,返回一个FILE指针。
    • fclose()函数用于关闭文件,释放资源。
  2. 文件的读取
    • fgetc()和getc()函数用于读取文件中的单个字符。
    • fgets()函数用于读取一行文本,fputs()函数用于写入一行文本。
    • fread()和fwrite()函数用于读写二进制数据块。
  3. 文件的写入
    • fputc()函数用于写入单个字符,fputs()函数用于写入字符串。
    • fwrite()函数用于写入数据块。
  4. 文件指针的移动
    • rewind()函数将文件指针重置到文件开头。
    • ftell()函数返回当前文件指针的位置。
    • fseek()函数用于移动文件指针到指定位置。
  5. 文件的错误检测
    • feof()函数检查是否到达文件末尾。
    • ferror()函数检查文件操作是否发生错误。
  6. 高级文件操作技巧
    • 文件的随机访问、文件缓冲、文件的截断等高级技巧。
    第十四章:结构体、联合体和枚举
  7. 结构体
    • 结构体是一种构造类型,可以包含多个不同类型成员。
    • 定义结构体使用struct关键字,可以指定标签(tag)。
    • 结构体变量的声明和使用,包括结构体数组和指针。
    • typedef用于为结构体创建新类型名,简化声明。
    • 结构体的初始化和指针的使用。
  8. 联合体(Union)
    • 联合体与结构体类似,但所有成员共享同一块内存空间。
    • 联合体的大小至少是最大成员的大小。
    • 联合体的定义和使用,以及成员的访问。
  9. 枚举(Enum)
    • 枚举是一种用户定义的类型,用于定义一组命名的整型常量。
    • 枚举的定义和使用。
  10. 结构体和文件
    • 结构体数据的文件读写,包括如何将结构体数据写入文件和从文件中读取。
  11. 结构体和链表
    • 如何使用结构体创建链表,包括单向链表和双向链表的实现。
  12. 动画和游戏设计
    • 介绍了动画的基本原理和实现方法。
    • 通过迷宫游戏和Flappy bird游戏的设计和实现,讲解了如何使用C语言开发简单的游戏。

教材学习中的问题和解决过程(先问 AI)

  • 问题1:指针和内存管理的复杂性

  • 问题1解决方案:
    理解指针的概念: 确保你理解了指针是什么,以及它们如何存储内存地址。
    练习指针操作: 通过编写代码来操作指针,比如指针算术、指针与数组的关系等。
    学习内存分配和释放: 掌握malloc、calloc、realloc和free等函数的用法。
    避免内存泄漏: 确保每次分配的内存都被正确释放,避免内存泄漏

  • 问题2:结构体和联合的使用

  • 问题2解决方案:
    理解结构体和联合的概念: 了解如何声明和使用结构体和联合。
    实践结构体和联合的使用: 通过编写代码来创建和操作结构体和联合,理解它们在实际编程中的应用。
    学习内存对齐和打包: 了解编译器如何为结构体分配内存,以及如何控制内存对齐。
    使用结构体和联合处理复杂数据: 学习如何使用结构体和联合来组织和管理复杂的数据

  • 问题3:文件操作的挑战

  • 问题3解决方案:
    理解文件操作的基本函数: 学习fopen、fclose、fread、fwrite、fprintf、fscanf等文件操作函数。
    实践文件读写: 通过编写代码来实现文件的读写操作,理解文件流的概念。
    处理文件错误: 学习如何检查和处理文件操作中可能出现的错误。
    了解文件指针和文件缓冲: 理解文件指针的作用以及文件缓冲区的工作方式。

基于AI的学习





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

  • 问题1:指针错误
    常见错误:

野指针(指向未初始化的内存)
空指针解引用(解引用NULL指针)
内存泄漏(未释放已分配的内存)
缓冲区溢出(写入超过分配内存的数据)

  • 问题1解决方案:
    初始化指针: 在声明指针时,确保它们被初始化为NULL或其他有效的内存地址。
    检查空指针: 在解引用指针之前,总是检查它是否为NULL。
    使用内存管理函数: 对于动态分配的内存,确保使用malloc和free正确分配和释放内存。
    使用工具检测内存问题: 使用如Valgrind这样的内存调试工具来检测内存泄漏和缓冲区溢出
  • 问题2:结构体和联合的使用错误
    常见错误:

结构体成员访问错误(访问未定义或错误的成员)
结构体内存对齐问题(编译器对齐导致的数据访问错误)

  • 问题2解决方案:
    正确访问成员: 确保你访问的是结构体中定义的成员,并且使用正确的访问符(.或->)。
    理解内存对齐: 学习编译器的内存对齐规则,并在必要时使用#pragma pack指令来控制对齐。
    使用sizeof操作符: 使用sizeof来检查结构体的大小,确保没有意外的填充字节
  • 问题3:文件操作错误
    常见错误:

文件未正确打开(文件路径错误或文件不存在)
文件读写错误(读写操作失败)
文件指针位置错误(未正确移动文件指针)

  • 问题3解决方案:
    检查文件打开状态: 使用fopen返回的文件指针检查文件是否成功打开。
    检查读写操作返回值: 对于fread、fwrite、fscanf和fprintf等函数,检查它们的返回值以确认操作是否成功。
    正确使用文件指针: 使用fseek和rewind等函数正确地移动文件指针,并使用ftell检查当前位置。

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

通过学习 C 语言程序设计的第十三章和十四章,我对结构体和文件操作有了更深刻的认识。结构体让我学会了如何将不同类型的数据组合在一起,使程序的数据管理更加清晰和高效,仿佛搭建起了复杂数据的框架。而文件操作则为数据的持久化存储和读取打开了大门,我明白了如何在程序与外部文件之间进行数据交互,这拓宽了程序的实用性和功能性。这两章的学习让我意识到 C 语言的强大与精妙,也激励我继续深入探索其更多的可能性,不断提升自己的编程能力,去构建更加复杂和实用的程序。

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 4/4 18/38
第三周 500/1000 5/7 22/60
第四周 500/1300 6/9 30/90
第五周 1000/1400 7/9 60/90
第六周 1200/1500 8/9 70/90
第七周 1400/1600 9/10 80/100
第八周 1600/1700 10/11 100/100
第九周 1900/1900 11/11 110/110
第十周 2100/2100 12/12 130/130
第十一周 2600/2600 13/13 150/150
第十二周 2900/2900 14/14 170/170
第十三周 3500/3500 15/15 190/190
第十四周 3700/3700 16/16 210/210

标签:文件,函数,2024,2025,内存,使用,结构,20241307,指针
From: https://www.cnblogs.com/ZYF15246391068/p/18638026

相关文章

  • 2024/12/28课堂记录
    目录最大连续和木材加工(月度开销)跳石头作业:修剪草坪最大连续和复习一下这次只写了朴素的dp版,注意,不要用贪心,因为单调队列只能优化dp很简单,注释都不用写了#include<iostream>usingnamespacestd;inta[200010],f[200010];intmain(){ intn,m; cin>>n>>m;......
  • [20241227]字符串转换成列表问题.txt
    [20241227]字符串转换成列表问题.txt--//开发经常会写sql语句,经常会出现in('111122','1111113'..,'2222111')之类的情况,一般语句in里面内容经常变化,导致无法使--//用绑定变量。--//实际上以前例子,通过建立type,然后建立函数将拼接的字符串转换为数字或者字符串列表。--//前几天有......
  • 2024/12/17 【字符串】LeetCode 459.重复的子字符串 【❌】
    https://programmercarl.com/0459.%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.html#%E6%80%9D%E8%B7%AFhttps://leetcode.cn/problems/repeated-substring-pattern/子串结束位置大于中间位置的话,一定不能重复组成字符串。如果next[len-1]!=-1,则说......
  • 2024-2025-1 20241413 《计算机基础与程序设计》第十四周学习总结
    |班级链接|https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP||作业要求|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14|教材学习内容总结《c语言程序设计>第十三,十四章第13章:文件操作文件的概念:介绍文件的基本概念,包括文件的分类(文本文件和二进制文件)以及文......
  • 2024-12-28:求出出现两次数字的 XOR 值。用go语言,给定一个数组 nums,其中的数字出现的频
    2024-12-28:求出出现两次数字的XOR值。用go语言,给定一个数组nums,其中的数字出现的频率要么是一次,要么是两次。请找出所有出现两次的数字,并计算它们的按位XOR值。如果没有数字出现两次,则返回0。1<=nums.length<=50。1<=nums[i]<=50。nums中每个数字要么出现过一......
  • 【2024年终总结】从初入博客到出入博客
    2024年已经过去了,我自己其实回头看看有的时候挺感慨的,因为我做过的事情比较多,本身我做过央国企的员工(物流管理),后来跟随初创团队去外面打拼做互联网(程序员),又到后来回运营商(还是央国企)做方案(售前售后),再往后做到央企的销售管理(班子成员),始终没想到自己的路线有这么多变数,但是也正是因......
  • 学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第十四周学习总结
    学期(2024-2025-1)学号(20241420)《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2024-2025-1计算机基础与程序设计第十四周作业)这个作业的目标<《C语......
  • PhpStorm 2024.3完整版的安装教程(附激活,常见问题处理)
    卸载老版本PhpStorm首先,如果小伙伴的电脑上有安装老版本的PhpStorm,需要将其彻底卸载掉,如下所示(没有安装则不用管,直接安装即可):TIP:如果你之前使用过本站提供的 激活到2025年版本脚本,需要执行对应卸载脚本/适用2024版本/JetBrains2023最新全家桶/jetbra/scripts/unin......
  • 2024第一届Solar杯应急响应挑战赛WP
    对于一个只学了2个月的小白来说这种比赛难度还是太高了,还要沉淀一下QAQ内存取证-1题目描述题目文件:SERVER-2008-20241220-162057请找到rdp连接的跳板地址flag格式flag{1.1.1.1}先imageinfo然后netscanF:\CTF软件合集\Misc杂项\隐写工具\取证类\volatility\VolatilityWor......
  • 2024省选联测1
    2024省选联测1题目来源:2024省选联测1\(T1\)HZTG5808.interval\(40pts\)原题:QOJ1173.KnowledgeIs..考虑按照左端点升序排序后反悔贪心。分别维护已经匹配的区间对和未被匹配的区间,若当前区间\(a\)可以和前面剩余的未被匹配的区间匹配则直接匹配;否则尝试找到......