簡體   English   中英

在同一文件上的fwrite和fprintf之間交替

[英]Alternate between fwrite and fprintf on same file

是否可以在同一文件的二進制寫入和常規寫入之間交替寫入?

我是否需要像這樣繼續打開和關閉文件?

struct node x;
FILE* fout;
fout = fopen("output.bin", "wb");
fwrite(&x, sizeof(struct node), 1, fout);
fclose(fout);
fout = fopen("output.bin", "a");
fprintf("&d", x.data);

至於在POSIX系統上的混合:這兩個都是同一個庫中的緩沖stdio例程,在POSIX(UNIX / Linux / Solaris / BSD)OS上,二進制和文本模式之間沒有區別,因此您確實可以將它們混合使用。

通常,fprintf將在每個換行符之后觸發刷新,因此只要您不將fprintf/fwrite與直接write()混合使用,就可以了。

關於Windows:fopen支持“ b”模式,確實存在區別。 如果以文本模式打開文件,則fseek將限於開始或當前文件指針。 我不假裝不知道二進制模式下使用fprintf()是否會有任何陷阱,因此如果您擔心Windows,我建議您檢查以前的SO線程。

以二進制和文本模式寫入的文件之間的區別

通常,如果需要將格式化的輸出與二進制文件混合,則可以使用sprintf()或其他內存機制先寫入緩沖區,然后再使用fwrite()批量寫入(刷新)緩沖的數據。

暫無
暫無

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

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