我想创建一个表示整数的二进制文件。我认为该文件应该是4个字节。我用linux。怎么做? 另一个问题:如何将该文件的内容分配给C中的整数?
答案 0 :(得分:13)
在标准C中,fopen()
允许模式"wb"
以二进制模式写入(和"rb"
读取),因此:
#include <stdio.h>
int main() {
/* Create the file */
int x = 1;
FILE *fh = fopen ("file.bin", "wb");
if (fh != NULL) {
fwrite (&x, sizeof (x), 1, fh);
fclose (fh);
}
/* Read the file back in */
x = 7;
fh = fopen ("file.bin", "rb");
if (fh != NULL) {
fread (&x, sizeof (x), 1, fh);
fclose (fh);
}
/* Check that it worked */
printf ("Value is: %d\n", x);
return 0;
}
输出:
Value is: 1
答案 1 :(得分:4)
从操作系统的角度来看,所有文件都是二进制文件。 C(和C ++)提供了一种特殊的“文本模式”,它可以实现将换行符扩展到换行符/回车对(在Windows上),但操作系统不知道这一点。
在C程序中,要创建没有这种特殊处理的文件,请使用fopen()的“b”标志:
FILE * f = fopen("somefile", "wb" );
答案 2 :(得分:2)
打开文件进行二进制读/写。 fopen采用b
开关进行文件访问模式参数 - see here
请参阅fopen page in Wikipedia了解文本和二进制文件之间的区别以及将数据写入二进制文件的代码示例
答案 3 :(得分:1)
有关系统调用man
,open
和write
的信息,请参阅read
。