1

从某个地方我得到了代码,可以在当前文件位置使用 fwrite 将内容写入文件,如下所示:

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

我想用常数替换“1”。我期待它是像“CUR_POS”或类似的东西,但没有找到任何东西。

有人可以帮忙吗?

谢谢!

4

3 回答 3

1

to的第三个参数fwrite不是位置,fwrite无论如何总是写入当前位置。第三个参数实际上是要写入的项目数,第二个参数是每个项目的大小。因此,如果您只是将单个数据块写入文件,则第二个参数应该只是块的大小,第三个应该是1(反之亦然)。

于 2013-10-28T23:37:22.103 回答
1

它不是位置常数。这是一个计数。如果您使用变量作为参数,它们将类似于:

fwrite(theData, elementSize, numberOfElements, outfile);

SomeValue您列出的代码是说将从任何点获取的 1 个字节写入outfile. fwrite无法在输出流中的其他任何地方写入。

如果您确实想在文件的其他位置写入,您可以查看seekor lseek

于 2013-10-28T23:37:29.000 回答
1

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

于 2013-10-28T23:37:33.390 回答