用文件模拟内存的读写问题

freshui 2009-08-16 11:14:40
因为内存都是动态随机访问的,给个地址就可以随机读写,

现在的问题是:读好办,fseek一下读就可以了,写怎么办?
如果我要修改一个数据,需要把访问所在位置及其之后的所有数据都要读出来再写回去吗?

有没有什么好的办法?
...全文
99 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
i_stone 2009-08-17
  • 打赏
  • 举报
回复
不是很清楚楼主的意思.如果只是写文件, 比如从文件的第1000个字节开始写,同样用SEEK(1000,CFILE::BEGIN),然后FILE.WRITE(BUF,LEN)就可以了啊
threewall 2009-08-17
  • 打赏
  • 举报
回复
一样记录相对位置就可以了
WizardOz 2009-08-17
  • 打赏
  • 举报
回复
写文件也是把文件指针移动到相应位置直接覆盖阿。
至于其后的数据,你不用管,除非你调用了文件截断功能,否则那些数据是不会丢失的。
kakashi0309 2009-08-17
  • 打赏
  • 举报
回复
指针不是都有类型的吗 要写的话也就是 sizeof(类型) 个字节
freshui 2009-08-17
  • 打赏
  • 举报
回复
ok, 测试了下,的确可以。
我记错了。
我印象中写中间的数据,会将之后的数据全冲掉。 :)

das_jack 2009-08-17
  • 打赏
  • 举报
回复
i/o操作本质都一样,这类问题,写个测试程序不就明白了吗
Arnold9009 2009-08-16
  • 打赏
  • 举报
回复
貌似不需要吧
内存写的时候,也是直接把指定地址的原有值覆盖掉的

文件写的时候,先移动指针到指定位置(类似内存的地址),然后写入指定数量的数据,这样操作
的话,我记得是直接覆盖掉那部分数据,其余的不影响的好像
1.本题目为模拟UNIX文件系统来设计一个多用户多级目录的文件系统。 1)课程设计所利用的空间为1M的内存模拟外存文件系统存储空间)或用一个文件模拟一个磁盘分区,模拟外存文件系统存储空间。这1M内存分成512块,每块为512个字节,这512块就是文件系统总共的可用块数,文件系统的分配就是以块为单位来分配的,空闲块的管理利用位示图的方法来管理。申请1M的内存的方法可以利用malloc()等。 2)在构造文件系统空间时,不用做引导块;专用块中只包含对空闲块和空闲磁盘i节点进行管理的信息,即位示图和记录空闲磁盘i节点号的数组(该数组大小可设置为与磁盘i节点总数相等);要做磁盘i节点区和文件存储区;不用做进程对换区。注意:仔细计算,合理分配各区域。 3)磁盘i节点可以利用在内存中生成链表或者数组的方法来生成,并且限制磁盘i节点数的最大值。同样内存活动i节点也可以利用链表的方法在内存中生成。 4)在往文件中写或者读的时候我们都是对内存中内容进行读写。例如你在文件中写的时候,其实是对分配的文件块中对应的内存赋值。当程序运行结束的时候,文件的内容都会丢失。我们这个文件系统只是一个模拟文件系统功能的虚拟文件系统。当然,若用一个文件模拟一个磁盘分区,模拟外存文件系统存储空间,那你在这个模拟系统中建立的文件其内容就不会丢失了 本程序使用txt文件模拟磁盘分区

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧