什么是二进制文件,我该如何创建一个?

3

我希望创建一个表示整数的二进制文件。我认为这个文件应该是4字节。我使用的是Linux系统。如何实现呢? 另一个问题:如何在C语言中将文件的内容赋值给一个整数变量?

4个回答

16

在标准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

2
请注意(通过 man fopen):模式字符串还可以包括字母“b”,可以作为最后一个字符或作为任何两个字符字符串中的字符之间的字符。这仅是为了与C89兼容,没有任何影响;在所有符合POSIX标准的系统上,包括Linux在内,都会忽略“b”。 (其他系统可能会以不同的方式处理文本文件和二进制文件,并且如果您对二进制文件进行I/O并且希望将程序移植到非Unix环境中,则添加“b”可能是一个好主意。) - user118861
对于float,请使用此链接:https://dev59.com/oFLTa4cB1Zd3GeqPc7mb#4465303 - gabor aron

4

从操作系统的角度来看,所有文件都是二进制文件。C(和C ++)提供了一个特殊的“文本模式”,可以执行一些操作,例如将换行符扩展为换行符/回车对(在Windows上),但操作系统不知道这一点。

在C程序中,要创建没有这种特殊处理的文件,请使用fopen()的“b”标志:

FILE * f = fopen("somefile", "wb" );

3
打开文件进行二进制读写。fopen函数需要使用b参数来指定文件访问模式 - 点击这里查看详情。
请访问维基百科的fopen页面,了解文本文件和二进制文件之间的区别以及写入二进制文件的代码示例。

2

请参考 man 手册,了解系统调用 openwriteread


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接