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);
}
Bài liên quan
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.
Cảm ơn bạn rất nhiều