永发信息网

c语言 如何删除文件中的一行,求解答!

答案:2  悬赏:0  手机版
解决时间 2021-11-26 11:17
  • 提问者网友:蓝莓格格巫
  • 2021-11-25 18:31
c语言 如何删除文件中的一行,求解答!
最佳答案
  • 五星知识达人网友:往事埋风中
  • 2021-11-25 19:01
一个文件内的内容加载到内存之后是连续存储的。(至少这种小文件,不超过4KB的)

如果想达到删除一行的效果。至少有三种办法可以实现

一、最简单的办法,建议读到链表里,删除其中一个节点。然后再覆盖写回到文件。
二、找到要删除的位置,fseek到该位置,将之后需要保留的文件内容,从这里开始写。
三、利用内存映射,将文件映射到内存,直接对内存修改,但是对内存修改,也是需要类似于方法2,将需要保留的内容重新移动位置。

综上,方法一最简单。
全部回答
  • 1楼网友:旧脸谱
  • 2021-11-25 19:48
单单对于你现在用的流操作来说 没有删除一行的API
不过这是可以实现的
整个程序的思路是酱紫的
1 在内存中维护你的数据表 可以使用链表 也可以使用数组
增删查改都在内存中完成 方式就是链表 或者顺序表 的增删查改
2 当程序退出时 要把文件保存在磁盘上

对于文件保存的实现有2种思路
如果你需要保证txt里面的版面像你截图一样清晰紧凑 则考虑思路1
如果不在意则可以考虑思路2

思路1 每次退出前 删掉原来的txt 重新输出同名的txt
为什么要删除重建而不是覆盖写入呢 因为假如你删除一行 那么你的表长度就变短了那么当你覆盖写入的时候 最后一行将会残留下来 造成错误
思路2 把要删的内容变成空格而不是删去 添加一个checkIsEmpty函数
如果编号为空格 则认为是记录为空
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯