簡體   English   中英

如何從 C 或 C++ 中的文件中刪除字節?

[英]How do I delete bytes from a file in C or C++?

我已經在谷歌上搜索了幾個小時......閱讀和閱讀和閱讀,但我遇到的任何問題似乎都無法回答這個簡單的問題:在 C 或 C++ 編程中:我有一個文件,它包含“hello world”。 我想刪除“世界”(比如在文本編輯器中按Backspace ),然后保存文件。 我該怎么做呢?

我知道文件是這里有很好的信息! ),它似乎沒有辦法從文件中刪除項目,而且我已經研究了 stdio.h 中所有與文件相關的函數: http://www.cplusplus.com/reference/cstdio/fopen/

在我看來,文件和流因此不像 arrays:我不能只從文件中刪除一個字節? 而是(我猜?)我必須創建一個全新的文件並將整個原始文件復制到新文件中,而不需要刪除我想要刪除的部分? 是這樣嗎?

我能想到的唯一其他選擇是在“世界”之前尋找 position,然后將二進制零寫入文件末尾,從而覆蓋“世界”。 然而,這個問題是文本編輯器現在將不再正確顯示該文件,因為其中包含不可打印的字符 - 並且文件大小沒有縮小 - 它仍然包含這些字節 - 它只是他們現在持有零而不是ASCII文本,所以這似乎也不正確。

有關的

您可以使用源文件中的 memory map 並將您想要的數據塊復制到另一個 memory Z1D78DC8ED51214E5AEB2 上的目標文件這是簡單快捷的方法(參見http://man7.org/linux/man-pages/man2/mmap.2.html

假設您的原始文件是“data.txt”。 作為代碼的一部分,打開一個新的臨時文件,例如“data.txt.tmp”並開始從原始文件向其中寫入內容。 寫入數據后,將原始文件替換為新文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM