📜  将结构读写到C中的文件(1)

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

将结构读写到C中的文件

在C语言中,我们通常需要将一些结构体(struct)数据保存到文件中或者从文件中读取结构体数据。这种操作主要是为了数据持久化或者方便从文件中读取大量数据。

写入结构体到文件

我们可以使用fwrite函数将结构体写入到文件中。下面是一个示例代码:

#include <stdio.h>
#include <stdlib.h>

struct person
{
    char name[20];
    int age;
};

int main()
{
    struct person p = {"John", 30};

    FILE *fp = fopen("person.txt", "wb");
    if(fp == NULL)
    {
        printf("Cannot open file.");
        exit(1);
    }

    fwrite(&p, sizeof(struct person), 1, fp);

    fclose(fp);

    return 0;
}

上面的代码中,我们定义了一个人的结构体,包含名字(name)和年龄(age)两个成员。我们使用fwrite函数将p写入到文件person.txt中。

fwrite的第一个参数是要写入文件的地址,第二个参数是写入数据单元的大小,第三个参数是写入数据单元的数量,最后一个参数是指向文件的指针。

从文件中读取结构体数据

我们可以使用fread函数从文件中读取结构体数据。下面是一个示例代码:

#include <stdio.h>
#include <stdlib.h>

struct person
{
    char name[20];
    int age;
};

int main()
{
    struct person p;

    FILE *fp = fopen("person.txt", "rb");
    if(fp == NULL)
    {
        printf("Cannot open file.");
        exit(1);
    }

    fread(&p, sizeof(struct person), 1, fp);

    printf("Name: %s, Age: %d\n", p.name, p.age);

    fclose(fp);

    return 0;
}

上面的代码中,我们定义了一个人的结构体,用于存储从文件中读取的数据。我们使用fread函数从文件person.txt中读取数据,并将读取的数据存储在p结构体中。

fread的第一个参数是存储数据的地址,第二个参数是读取数据单元的大小,第三个参数是读取数据单元的数量,最后一个参数是指向文件的指针。

小结

在C语言中,我们可以使用fwrite和fread函数将结构体数据保存到文件中或者从文件中读取结构体数据。这种操作对于复杂数据结构或大量数据的读写是非常方便的。