30/09/2018, 16:45

Thắc mắc về đọc dữ liệu từ tập tin nhị phân

Ví dụ em có tạo 1 tập tin nhị phân chứa thông tin của 1 quyển sách:

#include <stdio.h>
#define MAX 51

struct bookinfo{ // thông tin sách
	char *bname; // tên sách
	char *author; // tên tác giả
};

void main(){
	FILE *f = fopen("output.bin", "wt");
	bookinfo a;
	a.bname = "1 lit nuoc mat";
	a.author = "Aya";
	fwrite(&a, sizeof(bookinfo), 1, f); // n = 1
}

Câu hỏi đặt ra là khi dùng hàm fread để đọc từ tập nhị phân vừa tạo thì làm sao xác định được số block n muốn đọc? Làm sao để phân biệt đâu là tên sách, tên tác giả, nếu có nhiều hơn 1 quyển sách trong tập tin nhị phân?

Mong mọi người giúp đỡ. Em xin cảm ơn

Nguyễn Minh Dũng viết 18:46 ngày 30/09/2018

để đọc từ tập nhị phân vừa tạo thì làm sao xác định được số block n muốn đọc?

Em phải xác định chiều dài của bname và author trước chứ. Nếu không thì làm sao đọc. Ví dụ name là 255, author cũng 255

Minh Hoàng viết 18:56 ngày 30/09/2018

dùng chữ kí hoặc kí hiệu hoặc cờ gì đó
không thì phải ghi vào file độ dài tên sách luôn

Nguyễn Minh Dũng viết 19:00 ngày 30/09/2018

Trường hợp này nên fix luôn chiều dài cho dễ tính.

viết 19:01 ngày 30/09/2018

Đề yêu cầu đọc thông tin sách từ tập nhị phân với cấu trúc ví dụ như: tên sách (bname) là “tối đa” 50 ký tự. Vấn đề là em không biết xác định chiều dài để đọc vào, vì đâu phải tên sách nào cũng bấy nhiêu kí tự

Nguyễn Minh Dũng viết 19:00 ngày 30/09/2018

Em cho tên sách bname có độ dài là 50. Nếu tên sách ngắn hơn 50 thì em ghi số 0 vào. Sau này đọc ra đúng độ dài là 50 thì sẽ đọc được toàn bộ tên sách.

viết 18:56 ngày 30/09/2018

À, việc cần làm là viết hàm đọc vào thôi anh ạ. Hàm trên là em dùng để tạo file test hàm đọc.

Bài liên quan
0