有很多類似的問題,但沒有什麼回答這個專門搜索後,相當多。這裏所說:在C中截斷文件開頭的最好方法是什麼?
假設我們有文件(可能是二進制,並且更大的太):
abcdefghijklmnopqrztuvwxyz
什麼是最好的方式在C「移動」最右此文件到左側,截斷文件的開頭的部分..所以,例如,「前截斷」 7個字節將改變磁盤上的文件是:
hijklmnopqrztuvwxyz
我必須避免臨時文件,並且寧願不使用大緩衝區來將整個文件讀入內存。我想到的一種可能的方法是將fopen與「rb +」標誌一起使用,並且不斷地來回讀取和寫入以從偏移量開始複製字節到開頭,然後在末尾截斷setEndOfFile。這似乎是很多尋求(可能效率低下)。
另一種方法是打開同一個文件兩次,並將fgetc和fputc與各自的文件指針一起使用。這甚至有可能嗎?
如果還有其他方法,我很樂意閱讀它們。
我結束了兩次打開文件(有兩個文件指針)。這是非常快的(眨眼間約2mb;沒有基準)。我用ftruncate()和fileno()和ftell()。 – snapfractalpop