簡體   English   中英

從文件中讀取字節並覆蓋相同的字節

[英]Reading bytes from a file and overwriting the same bytes

我正在使用fread讀取文件的內容,並且想覆蓋剛剛讀取的字節。 所以說:

fread(buffer, buffersize, 1, FilePointer);

我想覆蓋剛剛讀取的完全相同的字節。 緩沖區的大小各不相同,但我想覆蓋我剛剛讀取的完全相同的字節數。 我怎樣才能做到這一點?

這是您可以做什么的方法。 我使用ftell()來記住起始位置,這樣我就不必擔心fread()成功還是失敗。

filePos = ftell(FilePointer);
fread(buffer, buffersize, 1, FilePointer);
fseek(FilePointer, filePos, SEEK_SET);
fwrite(buffer2, buffersize, 1, FilePointer);

請記住,如果您正在讀取和寫入相同的文件,則在從讀取更改為寫入時(或反之亦然fseek() ,需要確保使用fflush()fseek() 如果不這樣做,則會得到未定義的行為。 您可以在此處了解更多信息。

順便說一句,如果您正在尋找讀取/寫入文件中字節的更快方法,則可能需要考慮使用mmap()將文件映射到內存。

暫無
暫無

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

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