📜  如何在 c 中从 bin 文件写入 2d 数组 (1)

📅  最后修改于: 2023-12-03 15:24:07.529000             🧑  作者: Mango

如何在 C 中从 bin 文件写入 2D 数组

在 C 语言中,我们可以使用文件 I/O 来将数据从文件读取到程序中,或者将程序中的数据写入到文件中。本文将介绍如何从一个 bin 文件中写入数据到一个 2D 数组中。

1. 创建一个二维数组

首先,我们需要创建一个二维数组,以便在之后将从文件中读取的数据写入到数组里。假设我们要从文件中读取一个 3x3 的二维数组,代码如下:

int arr[3][3];
2. 打开二进制文件

为了从文件中读取数据,我们需要打开该文件。在 C 语言中,可以使用 fopen() 函数来打开文件。对于二进制文件,我们需要以二进制模式打开该文件,代码如下:

FILE *fp;
fp = fopen("file.bin", "rb");
if (fp == NULL) {
    printf("Unable to open file\n");
    exit(1);
}

在上述代码中,我们打开名为 "file.bin" 的二进制文件,使用了 "rb" 模式(以二进制模式打开文件)。如果打开失败,则输出错误信息并结束程序。

3. 从文件中读取数据

我们已经打开了文件,现在需要从文件中读取数据。在 C 语言中,可以使用 fread() 函数来从文件中读取数据。该函数有四个参数:

  • void *ptr:要读取到的数据要存放的位置(指针)
  • size_t size:每个数据项的字节数
  • size_t count:要读取的数据项的数量
  • FILE *stream:要读取数据的文件指针

对于二维数组,我们可以将数组的首地址传递给 ptr 参数,将每个数据项的字节数设为二维数组中每个元素的字节数,将要读取的数据项数量设为二维数组的大小(即 3 * 3),最后使用上述打开文件时返回的文件指针作为 stream 参数。代码如下:

fread(arr, sizeof(arr), 1, fp);

在上述代码中,我们将从文件中读取 sizeof(arr) 个字节(即整个二维数组)并将其存储到指定的地址。

4. 关闭文件

我们已经从文件中读取了数据并将其存储到了 2D 数组中,现在可以关闭文件了。在 C 语言中,可以使用 fclose() 函数来关闭文件,代码如下:

fclose(fp);
5. 完整代码
#include <stdio.h>
#include <stdlib.h>

int main() {
    int arr[3][3];
    FILE *fp;
    fp = fopen("file.bin", "rb");
    if (fp == NULL) {
        printf("Unable to open file\n");
        exit(1);
    }
    fread(arr, sizeof(arr), 1, fp);
    fclose(fp);
    return 0;
}
6. 总结

通过以上步骤,我们可以从二进制文件中读取数据并将其存储到 2D 数组中。在实际应用中,我们可以将读取到的数据用于其他用途。需要注意的是,我们读取的数据大小必须与数组的大小一致,否则可能会导致程序出现错误。