c语言数据存入文件

在C语言中,文件存储是一种常见的数据库存储方式,通过将数据以文本形式存储在文件中,可以实现对数据的持久化存储和快速访问,本文将详细介绍如何使用C语言实现文件存储数据库,包括文件的打开、关闭、读取、写入等操作。

(图片来源网络,侵删)

文件操作基本概念

1、文件指针:在C语言中,文件操作是通过指针来实现的,每一个文件在打开时都会被分配一个文件指针,通过这个指针可以对文件进行各种操作。

2、文件类型:在C语言中,文件可以分为文本文件和二进制文件,文本文件是以字符为单位进行读写的,而二进制文件则是以字节为单位进行读写的。

3、文件打开模式:在C语言中,文件打开模式决定了文件的读写权限,常见的文件打开模式有只读、写入、读写等。

文件操作函数

1、fopen:用于打开文件,返回一个指向文件的指针。

FILE *fopen(const char *filename, const char *mode);

2、fclose:用于关闭文件。

int fclose(FILE *stream);

3、fread:用于从文件中读取数据。

size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

4、fwrite:用于向文件中写入数据。

size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);

5、fseek:用于设置文件读写位置。

int fseek(FILE *stream, long int offset, int origin);

6、ftell:用于获取当前文件读写位置。

long int ftell(FILE *stream);

7、rewind:用于将文件读写位置重置到文件开头。

void rewind(FILE *stream);

8、feof:用于判断是否已经到达文件末尾。

int feof(FILE *stream);

9、ferror:用于判断上次文件操作是否出错。

int ferror(FILE *stream);

实现一个简单的文件存储数据库

下面是一个简单的文件存储数据库示例,实现了数据的插入、查询和删除功能。

1、定义数据结构体:

typedef struct {
    int id; // 编号
    char name[20]; // 姓名
    int age; // 年龄
} Person;

2、插入数据:

void insert_data(FILE *file) {
    Person person;
    printf("请输入编号、姓名和年龄:");
    scanf("%d %s %d", &person.id, person.name, &person.age);
    fwrite(&person, sizeof(Person), 1, file); // 将数据写入文件
}

3、查询数据:

void query_data(FILE *file) {
    Person person;
    printf("请输入要查询的编号:");
    scanf("%d", &person.id); // 读取用户输入的编号
    rewind(file); // 将文件读写位置重置到文件开头,以便从头开始查找数据
    while (fread(&person, sizeof(Person), 1, file)) { // 从文件中读取数据,直到遇到文件末尾或找到匹配的数据为止
        if (person.id == person.id) { // 如果找到了匹配的数据,输出结果并结束查找过程
            printf("编号:%d
", person.id);
            printf("姓名:%s
", person.name);
            printf("年龄:%d
", person.age);
            break;
        } else { // 如果还没有找到匹配的数据,继续查找下一个数据块(注意这里是跳过了一个数据块)
            fseek(file, sizeof(Person), SEEK_CUR); // 将文件读写位置向后移动一个数据块的大小(即跳过一个数据块)
        }
    }
}

4、删除数据:由于文件中的数据是顺序存储的,因此删除数据需要先找到要删除的数据,然后将后面的数据向前移动一个数据块的位置,覆盖掉要删除的数据,这个过程可以通过以下函数实现:

void delete_data(FILE *file) {
    Person person;
    printf("请输入要删除的编号:");
    scanf("%d", &person.id); // 读取用户输入的编号,作为要删除的数据的编号(注意这里没有使用结构体中的id字段,因为我们需要保留这个字段的值以便输出结果)

评论列表

张磊
张磊
2024-02-11

使用C语言将数据存入文件,是编程中基础且重要的一步,通过这个操作,我们可以轻松地在硬盘上保存我们的程序运行结果或重要数据,实现数据的持久化存储。

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。