30/09/2018, 20:19

Mình đọc/ghi file nhị phân xong in ra màn hình thì nó hiện chữ linh tinh

mình in ra màn hình thì nó hiện chữ linh tinh, mình sai ở đâu ai chỉ mình với !

#include <stdio.h>
#include <conio.h>
#include <fstream>

struct sv
{
	char ht[30];
	int diem;
};
void ghifile(sv x)
{
	FILE *f;
	f=fopen("sv.txt","wb");
	if(f!=NULL)
	{
		fwrite(&x,sizeof(sv),1,f);
		fclose(f);		
	}
}
void nhap(sv x)
{
	printf("
Nhap ho ten: ");fflush(stdin);gets(x.ht);
	printf("
Diem:");scanf("%d",&x.diem);
}
void docfile(sv x)
{
	FILE *f;
	f=fopen("sv.txt","rb");
	if(f!=NULL)
	{
		fread(&x,sizeof(sv),1,f);
	}
	printf("
%s  %d",x.ht,x.diem);
}
main()
{
	sv x;
	nhap(x);
	ghifile(x);
	docfile(x);
}
viết 22:34 ngày 30/09/2018

Linh tinh là do x nhận vào hàm ghifile là một trị rác, bởi vì x trong hàm nhap là value parameter, nên sau khi thực hiện nhap x trong main vẫn không thay đổi. Bạn nên dùng con trỏ đối với x trong hàm nhap.

Dung Nguyen viết 22:34 ngày 30/09/2018

Cảm ơn bạn rất nhiều

Bài liên quan
0