01/10/2018, 15:07

Đọc file bằng binary

Mình code đọc một file bằng nhị phân, đây là hàm đọc của mình. Lỗi ở chỗ fread, không đọc được. Nhưng khi mình thay bằng fscanf thì lại ok.
Không biết bị lỗi chỗ nào ^^

void readFile(FILE *fo, bac2s &x)
{
	fread(&x.n, sizeof(int), 1, fo);

	x.a = new int[x.n];
	x.b = new int[x.n];
	x.c = new int[x.n];
	for (int i = 0; i < x.n; i++)
	{
		fread(&x.a[i], sizeof(int), 1, fo);
		fread(&x.b[i], sizeof(int), 1, fo);
		fread(&x.c[i], sizeof(int), 1, fo);
	}

	printf("
Doc xong");
	fclose(fo);
}

struct:

struct bac2s
{
	int n;
	int *a, *b, *c;
};

main:

int main()
{
	FILE *f;
	f = fopen("hello.txt", "rb");
	if (f == NULL)
	{
		printf("
Khong mo duoc file");
		return 0;
	}
	bac2s x;

	readFile(f, x);
	printf("
%d", x.n);
	for (int i = 0; i < x.n; i++)
	{
		printf("
%d %d %d", x.a[i], x.b[i], x.c[i]);
	}



	delete[]x.a;
	delete[]x.b;
	delete[]x.c;
	_getch();
	return 0;
}

file:

3
1 2 3
3 5 4
-4 9 -8
HelloWorld viết 17:21 ngày 01/10/2018

fread(&bien.n, sizeof(int), 1, fo);

Địa chỉ đích gửi vào fread là 1 con trỏ kiểu char.Biến bien là kiểu gì đấy. Trong chương trình k có. Bạn có thể ép kiểu qua char
Tương tự biến x cũng phải ép qua *char

Hello World viết 17:23 ngày 01/10/2018

mình sửa lại rồi, bien sửa thành x
^^

Hello World viết 17:08 ngày 01/10/2018

mà bắt buộc là char hả ??
mình đâu có nhớ như v ^^
sửa như bn ns cuk ko dc

Bài liên quan
0