什么是二进制文件以及如何创建一个?

发布于 2024-07-23 17:27:41 字数 86 浏览 5 评论 0原文

我想创建一个表示整数的二进制文件。 我认为该文件应该是4个字节。 我用的是Linux。 怎么做? 另一个问题:如何将该文件的内容分配给 C 中的整数?

I would like to create a binary file representing an integer. I think the file should be 4 bytes. I use linux. How to do that?
Another question: How do I assign the content of that file to an integer in C?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

临风闻羌笛 2024-07-30 17:27:41

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

In standard C, fopen() allows the mode "wb" to write (and "rb" to read) in binary mode, thus:

#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;
}

This outputs:

Value is: 1
很糊涂小朋友 2024-07-30 17:27:41

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

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

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

From the operating system's point of view, all files are binary files. C (and C++) provide a special "text mode" that does stuff like expanding newline characters to newline/carriage-return pairs (on Windows), but the OS doesn't know about this.

In a C program, to create a file without this special treatment, use the "b" flag of fopen():

FILE * f = fopen("somefile", "wb" );
樱&纷飞 2024-07-30 17:27:41

打开文件进行二进制读/写。 fopen 采用 b 开关作为文件访问模式参数 - 参见此处

请参阅维基百科中的 fopen 页面,了解文本文件和二进制文件之间的区别:以及将数据写入二进制文件的代码示例

Open the file for binary read/write. fopen takes a b switch for file access mode parameter - see here

See the fopen page in Wikipedia for the difference between text and binary files as well as a code sample for writing data to a binary file

笑,眼淚并存 2024-07-30 17:27:41

请参阅 man 了解系统调用 openwriteread

See man for syscalls open, write and read.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文