【发布时间】:2009-06-11 07:39:01
【问题描述】:
我想创建一个表示整数的二进制文件。我认为该文件应该是 4 个字节。我使用Linux。怎么做? 另一个问题:如何将该文件的内容分配给 C 中的整数?
【问题讨论】:
标签: c linux binaryfiles
我想创建一个表示整数的二进制文件。我认为该文件应该是 4 个字节。我使用Linux。怎么做? 另一个问题:如何将该文件的内容分配给 C 中的整数?
【问题讨论】:
标签: c linux binaryfiles
在标准 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
【讨论】:
float 使用这个:stackoverflow.com/a/4465303
从操作系统的角度来看,所有文件都是二进制文件。 C(和 C++)提供了一种特殊的“文本模式”,可以将换行符扩展为换行符/回车符对(在 Windows 上),但操作系统不知道这一点。
在 C 程序中,要创建没有这种特殊处理的文件,请使用 fopen() 的“b”标志:
FILE * f = fopen("somefile", "wb" );
【讨论】:
打开文件进行二进制读/写。 fopen 为文件访问模式参数使用b 开关 - see here
请参阅fopen page in Wikipedia 了解文本文件和二进制文件之间的区别以及将数据写入二进制文件的代码示例
【讨论】:
有关系统调用open、write 和read,请参阅man。
【讨论】: