繁体   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