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

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

时间:2024-12-29 19:19:55浏览次数:5  
标签:20241403 文件 读取 字符 读写 2024 2025 数据 指针

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

作业信息

这个作业属于哪个课程 <班级的链接>(2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 <作业要求的链接>(2024-2025-1计算机基础与程序设计第十四周作业)
这个作业的目标 二进制文件和文本文件 文件的打开和关闭 按字符读写文件 按格式读写文件 按数据块读写文件 文件的随机读写 文件输入/输出重定向
作业正文 https://www.cnblogs.com/chenqiqi/p/18639403

教材学习内容总结

二进制文件和文本文件:
文本文件:以文本形式存储数据,文件中的数据可以被人类阅读。在文本文件中,数据通常以字符形式存储,并且有特定的编码格式,如ASCII或UTF-8。
二进制文件:以二进制形式存储数据,文件中的数据通常是非文本的,比如图片、音频、视频等。二进制文件中的数据不能直接被人类阅读,需要特定的程序来解析。

文件的打开和关闭:
打开文件:在编程中,打开文件通常需要指定文件路径和打开模式(如只读、写入、追加等)。例如,在Python中,可以使用open()函数打开文件。
关闭文件:文件使用完毕后需要关闭,以释放系统资源。在Python中,可以使用close()方法关闭文件,或者使用with语句自动管理文件的打开和关闭。

按字符读写文件:
按字符读写文件意味着每次读取或写入一个字符。在Python中,可以使用read(1)或write()方法按字符读写。

按格式读写文件:
按格式读写文件是指按照特定的格式(如整数、浮点数、字符串等)读取或写入数据。在Python中,可以使用readline()、readlines()、read()等方法按行或按需读取,以及format()函数或%操作符格式化字符串。

按数据块读写文件:
按数据块读写文件意味着每次读取或写入一定大小的数据块。在Python中,可以使用read(size)和write(data)方法,其中size指定了块的大小。

文件的随机读写:
随机读写文件是指可以跳到文件的任意位置进行读写。在Python中,可以使用seek(offset)方法移动文件指针到指定位置,然后进行读写操作。

文件输入/输出重定向:
文件输入/输出重定向是指将标准输入输出流重定向到文件。在命令行中,可以使用>将输出重定向到文件,使用<将输入重定向自文件。在编程中,可以通过修改标准输入输出流的引用来实现重定向。

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

  • 问题1:在对一个大型二进制文件进行按数据块读写时,如何优化读写性能以减少系统开销,并确保数据的完整性和准确性?同时,如果在读写过程中遇到文件损坏或硬件故障导致的部分数据丢失,如何进行有效的错误恢复和数据一致性保证?

  • 问题1解决方案:
    为了优化大型二进制文件按数据块的读写性能,可以采取以下措施:
    使用较大的缓冲区来减少系统调用次数。例如,定义一个合适大小的字符数组作为缓冲区,通过fread和fwrite函数以较大的数据块进行读写操作,而不是逐个字节或小数据量地读写。
    采用顺序读写方式,因为对于机械硬盘来说,顺序读写的性能远高于随机读写。尽量避免频繁的文件指针移动操作,除非确实需要随机访问文件中的特定位置。
    对于多核处理器系统,可以考虑使用多线程或多进程来并行地进行文件读写操作,但要注意线程 / 进程间的同步和数据一致性问题。
    当遇到文件损坏或数据丢失的情况时:
    在每次成功写入数据块后,可以立即计算并保存该数据块的校验和(如 CRC 校验和)。在读取数据时,先验证校验和,如果校验和不匹配,则说明数据可能已损坏。对于损坏的数据块,可以尝试从备份文件(如果存在)中恢复,或者根据文件的格式和数据的逻辑关系进行部分数据的修复(例如对于一些结构化的数据文件,可以根据其他完整的数据块来推断和修复损坏部分的数据)。
    建立日志文件记录文件操作的关键信息,包括每次读写的数据块位置、大小和操作结果等。在发生错误时,可以通过分析日志文件来确定数据丢失或损坏的位置和范围,以便更有针对性地进行恢复操作。同时,定期对日志文件进行清理和归档,避免其占用过多的存储空间。

  • 问题2:在 C 语言中,同时使用按字符读写文件和按格式读写文件操作同一个文本文件时,如何确保文件指针的位置正确,避免出现读写混乱以及数据丢失或重复读取的情况呢?

  • 问题2解决方案:
    在 C 语言中,无论是fgetc(按字符读写)还是fscanf(按格式读写)等文件操作函数,它们都会自动维护一个内部的文件指针,用于指示当前读写操作在文件中的位置。
    首先,要明确每个函数操作后文件指针的移动规则:
    fgetc每读取一个字符,文件指针就会向后移动一个字节的位置,使其指向下一个待读取的字符。
    fscanf根据其格式控制字符串来解析并读取文件中的数据,读取完相应的数据后,文件指针会移动到本次读取结束的位置,通常是刚好越过刚读取的数据部分,为下一次读取做好准备。
    为避免读写混乱等问题:
    不要在不了解文件指针当前位置以及操作影响的情况下,随意混合使用不同的读写函数,除非有明确的逻辑来处理文件指针的协调。例如,如果先用fscanf按格式读取了一行数据,此时文件指针移动到了该行数据末尾,若紧接着想用fgetc读取下一个字符,是没问题的,它会从文件指针当前位置继续往后读取。但如果想回退到之前读取过的某个位置重新读取,那就需要使用fseek函数来显式地调整文件指针位置了,比如fseek(fp, -10L, SEEK_CUR);就可以将文件指针从当前位置回退 10 个字节(假设文件是以二进制模式打开,文本模式下字节数的计算可能因编码等因素有差异)。
    在复杂的文件操作场景中,可以添加适当的调试输出语句,打印出文件指针当前的位置(可以通过ftell函数获取文件指针相对文件开头的偏移字节数),以便清晰地了解文件指针的状态,及时发现位置异常的情况并进行修正。

基于AI的学习

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

  • 问题1:在改地址的时候,直接按照模版改,导致改后地址错误,没有攻击成功
  • 问题1解决方案:
    根据语句strcpy(buffer + 100,shellcode)计算shellcode的地址为0xffffd4b0+0x640xffffd514。然后修改exploit.c文件,将\x??\x??\x??\x??修改为计算的结果\x14\xd5\xff\xff,注意顺序是反的。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第十三周 500/6000 1/13 20/20
第十四周 500/6500 1/14 18/38
第十五周 0/7000 0/15 22/60

标签:20241403,文件,读取,字符,读写,2024,2025,数据,指针
From: https://www.cnblogs.com/chenqiqi/p/18639403

相关文章

  • 轻舟已过万重山——2024秋软工实践个人总结
    ......
  • 2024.12.28 Good Bye 2024: 2025 is NEAR
    比赛链接Solved:5/10Rank:1565-90又-90,好不容易上点分两场全掉没了……A.TenderCarpenter题意:\(n\)个数,问能否有多于一种划分方案,使得划分出的每组数中任选三个数(可以相同)都能构成三角形。显然全划分成一个是合法的;那么只需考虑任意的相邻两个数能否分成一组即可。......
  • 2024.12.28 周六
    2024.12.28周六Q1.1100Youaregiventwointegers$l\ler$.Youneedtofindpositiveintegers$a$and$b$suchthatthefollowingconditionsaresimultaneouslysatisfied:$l\lea+b\ler$$\gcd(a,b)\neq1$orreportthattheydonotexist.......
  • 磨砺以成——2024秋软工实践个人总结
    一、学期回顾1.1回顾你对于软件工程课程的想象最初的期待与目标:你对软件工程课程的理解和期待是什么?软件工程是一门系统化、工程化地解决软件开发和维护问题的学科。我对该课程的理解是,它不仅教授理论知识,例如软件开发生命周期、需求分析、架构设计、质量保障等内容,还注......
  • # 学期(2024-2025-1) 学号(20241405) 《计算机基础与程序设计》第14周学习总结
    作业信息|这个作业属于哪个课程|(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)||这个作业要求在哪里|(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276)||这个作业的目标|《C语言程序设计》第13-14章并完成云班课测试||作业正文|...本博......
  • 2025年Java面试八股文(全网最全)
    1、悲观锁、乐观锁和分布式锁的实现和细节悲观锁:认为线程安全问题一定会发生,所以在操作数据之前先获取锁,保证线程串行执行,例如synchronized,lock细节:悲观锁适合插入数据锁的粒度要尽量小,只锁住需要串行执行的代码配合事务使用时,要先提交事务再释放锁乐观锁:认为线程安......
  • C++ 电子学会二级2024年12月部分考题答案
    1、逆行描述:网上有个段子说:妻子在家听广播,听到某高速路上有一辆车在逆行,想到丈夫在那条高速上行驶,就打电话对丈夫说:“老公啊,你走的那条高速上有一辆车在逆行,你小心点。”她丈夫说:“何止啊!我看好几百辆车都在逆行!”现在我们查了一下高速公路上拍到的好几百辆车的时速,发现有......
  • 2024年作品汇总
    思维读书笔记-《当下的力量》读书笔记-《暗时间》信息技术如何设计离线跑批系统程序员工作中常见问题,你遇到过几个?读书笔记-《Redis设计与实现》(一)数据结构与对象(上)读书笔记-《大数据时代》读书笔记-《Spring技术内幕》(一)IoC容器的实现读书笔记-《Spring技......
  • 2024-2025-1 20241327 《计算机基础与程序设计》第十四周学习总结
    作业信息|2024-2025-1-计算机基础与程序设计)||--|-|2024-2025-1计算机基础与程序设计第十四周作业)||快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题并在期末回答这些问题|作业正文|https://www.cnblogs.com/shr060414/p/18440575|......
  • 2024 第一届Solar应急响应
    Tw0队伍writeup一、简介欢迎有更好的解题思路一起交流学习。最好能来点写自动化一把梭工具的代码思路,哈哈哈!二、解题情况三、CTF题签到题目描述:本题作为签到题,请给出邮服发件顺序。Received:frommail.da4s8gag.com([140.143.207.229])bynewxmmxszc6-1.qq.com......