[英]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.