C语言定义一个图书类结构体(书名语文书,编号001,出版日期1月1号)变量个数为4.使用读写数据块函数,把书本信息写入文件后,再读出
时间: 2024-02-19 09:02:48 浏览: 70
好的,这是一个简单的 C 代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义图书类结构体
struct Book {
char name[20]; // 书名
char id[10]; // 编号
char date[20]; // 出版日期
};
// 写入数据块函数
void writeDataBlock(FILE* fp, Book book) {
fwrite(&book, sizeof(Book), 1, fp);
}
// 读取数据块函数
void readDataBlock(FILE* fp, Book* book) {
fread(book, sizeof(Book), 1, fp);
}
int main() {
Book books[4] = {
{"语文书", "001", "1月1号"},
{"数学书", "002", "2月2号"},
{"英语书", "003", "3月3号"},
{"物理书", "004", "4月4号"}
};
// 写入数据
FILE* fp = fopen("books.dat", "wb");
for (int i = 0; i < 4; i++) {
writeDataBlock(fp, books[i]);
}
fclose(fp);
// 读取数据
Book book;
fp = fopen("books.dat", "rb");
while (!feof(fp)) {
readDataBlock(fp, &book);
printf("书名:%s,编号:%s,出版日期:%s\n", book.name, book.id, book.date);
}
fclose(fp);
return 0;
}
```
这个程序首先定义了一个 `Book` 结构体,包含了书名、编号和出版日期三个属性,然后定义了写入和读取数据块的函数 `writeDataBlock` 和 `readDataBlock`,分别使用了 `FILE*` 类型的指针来写入和读取数据。
在 `main` 函数中,首先定义了一个包含四本书的 `Book` 数组,并且使用 `FILE*` 指针把所有书本信息写入文件 `books.dat` 中,然后使用 `FILE*` 指针从 `books.dat` 中读取所有书本信息,并输出到控制台上。
注意,为了保证写入和读取的数据能够一一对应,我们在写入数据块时使用了 `sizeof(Book)` 来指定写入的数据块大小,在读取数据块时也使用了相同的方式来读取数据。同时,在读取数据块时,我们需要传递一个指向 `Book` 结构体的指针,来让函数能够修改 `book` 变量的值。
阅读全文