[英]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
無法在輸出流中的任何其他位置寫入。
如果你想在一個文件中的其他地方寫,你會考慮seek
或lseek
。
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.