从某个地方我得到了代码,可以在当前文件位置使用 fwrite 将内容写入文件,如下所示:
fwrite(SomeValue, sizeof(unsigned char), 1, outfile);
我想用常数替换“1”。我期待它是像“CUR_POS”或类似的东西,但没有找到任何东西。
有人可以帮忙吗?
谢谢!
to的第三个参数fwrite
不是位置,fwrite
无论如何总是写入当前位置。第三个参数实际上是要写入的项目数,第二个参数是每个项目的大小。因此,如果您只是将单个数据块写入文件,则第二个参数应该只是块的大小,第三个应该是1
(反之亦然)。
它不是位置常数。这是一个计数。如果您使用变量作为参数,它们将类似于:
fwrite(theData, elementSize, numberOfElements, outfile);
SomeValue
您列出的代码是说将从任何点获取的 1 个字节写入outfile
. fwrite
无法在输出流中的其他任何地方写入。
如果您确实想在文件的其他位置写入,您可以查看seek
or 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。