有没有从打开的文件中删除某些东西的基本方法
当你用fopen打开一个.txt文件 有没有什么办法可以在不重写的情况下删除文件中的一些字符串。有没有从打开的文件中删除某些东西的基本方法
例如,这是我将用fopen()打开的txt文件;
------------- 1 some string
2 SOME string
3 some STRING
-------------
我想删除它的第一个字符为2的行,它变成
------------- 1 some string
3 some STRING
-------------
我的解决方案; 首先读取所有数据并将其保存在字符串变量中。然后用w模式打开同一个文件。并且再次写入数据,除了第2行。(但这不符合逻辑我正在寻找一个更简单的方法在C ...) (我希望我的英语不是问题)
回答:
最简单的方法可能是记忆 - 使用mmap映射整个文件。使用mmap,您可以将文件作为长内存缓冲区访问,您可以通过在磁盘上反映更改来修改该内存缓冲区。然后您可以找到该行的偏移量,并将文件的整个尾部移回许多字节以覆盖该行。
回答:
对于顺序文件,无论使用什么技术删除第2行,都必须将文件写回磁盘。
回答:
你不应该覆盖文件,更好的办法是打开另一个(临时)文件,写入内容,然后删除旧文件并重命名文件。所以如果发生问题会更安全。 我认为最简单的方法就是
- 读取整个文件
- 修改内存内容
- 写回临时文件
- 删除原始文件
- 重命名临时文件到原始文件
声音对我来说不太不合逻辑
以上是 有没有从打开的文件中删除某些东西的基本方法 的全部内容, 来源链接: utcz.com/qa/257607.html