2012-12-11 45 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