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