簡體   English   中英

fwrite的C ++常量

[英]C++ constant for fwrite

從某個地方我得到了代碼,在當前文件位置使用fwrite將文件寫入文件,如下所示:

fwrite(SomeValue, sizeof(unsigned char), 1, outfile);

我想用常數替換“1”。 我期待它像“CUR_POS”或類似的東西,但沒有找到任何東西。

有人可以幫忙嗎?

謝謝!

fwrite的第三個參數不是位置,因為fwrite總是寫入當前位置,無論如何。 第三個參數實際上是要寫入的項目數,第二個參數是每個項目的大小。 因此,如果您只是將一個數據塊寫入文件,則第二個參數應該只是塊的大小,第三個參數應該是1 (反之亦然)。

這不是一個位置不變的。 這是一個計數。 如果您使用變量作為參數,它們將是:

fwrite(theData, elementSize, numberOfElements, outfile);

你列出的代碼是寫一個字節,取自SomeValue指向的任何地方,到outfile的當前位置。 fwrite無法在輸出流中的任何其他位置寫入。

如果想在一個文件中的其他地方寫,你會考慮seeklseek

1英寸

fwrite(SomeValue, sizeof(unsigned char), 1, outfile);

實際上是sizeof(unsigned char)值的乘數,而不是文件中的位置。

這樣你就可以輕松做到這樣的事情:

struct Foo bar[64];
int numItems = fwrite(bar, sizeof(Foo) /*objectSize*/, 64 /*numObjects*/, outfile);

“numItems”是它能夠寫入的完整'Foo'的數量,在這種情況下名義上應該是64。

http://linux.die.net/man/3/fwrite

要更改FILE *文件中的下一個寫入位置,請參閱fseek

暫無
暫無

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

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