2012-12-11 77 views
3

我知道是否可以直接向二进制文件写入常量值?

fwrite(&variable,sizeof(datatype),<count>,<filepointer>); 

将数据写入到 二进制文件。但是如果我想将字符'c'直接写入二进制文件(不使用缓冲区变量),该怎么办?我不能放,

fwrite(&'c',sizeof(datatype),<count>,<filepointer>); 

这是可能的吗?

回答

4

使用putc将或的fputc(两者具有相同的签名):

int putc(int c, FILE *stream); 

如果你有兴趣putc将VS的fputc检查下面的评论,他们知道比我好:)

+0

或'putc',可能会更快一些。 –

+0

@larsmans谢谢,改变 – BlackBear

+0

我的好奇心:putc和fputc有什么区别? – anishsane

0

C,你不能得到一个常量的地址。所以不,你不能。

0

尝试

fwrite("c",sizeof(datatype),<count>,<filepointer>); 

例如

fwrite("c",1,1,fileptr); 

注:我没有自己测试过。但我怀疑这应该起作用。由Eric评论后

添加:

fwrite((char []){'c'}, 1, 1, fileptr); 

的^^的优点这种方法,就像字符,你可以插入一个整数或任何其他标准数据类型也。

+0

putc看起来像优化的解决方案。 – anishsane

+0

您建议的代码的第二个参数看起来不正确。 OP希望写入一个字符,因此写入的大小应为1. – simonc

+0

是的,我只更改了第一个参数。 – anishsane