首先,我在这里读到:
我正在尝试在C中读取二进制文件。并编写了这段代码:
struct emp
{
char name[20];
char surname[20];
char no[20];
char aldigiDersKodu[20];
};
struct emp e;
***
***
***
FILE *fp;
fp = fopen("student.bin","rb+");
if(fp == NULL)
{
fp = fopen("student.bin","wb+");
if(fp == NULL)
{
printf("File is not opening.");
exit(1);
}
}
***
***
***
fseek(fp, 0, SEEK_END);
another = 'y';
while(another == 'y')
{
printf("\nOgrencinin Adi: ");
scanf("%s",e.name);
printf("\nOgrencinin Soyadi: ");
scanf("%s", &e.surname);
printf("\nOgrencinin Numarasi: ");
scanf("%s", &e.no);
fwrite(&e, sizeof(struct emp), 1, fp);
printf("\nYeni Ogrenci Ekle(y/n)\n");
fflush(stdin);
another = getche();
}
***
***
***
我正在向学生添加课程名称和课程代码(例如:数学,M1)。(相同方法)
此读取二进制文件代码:
scanf("%s", no);
rewind(fp);
while(fread(no, sizeof(struct emp), 1, fp) == 1)
{
printf("\n%s %s %s %s", &e.name, &e.surname, e.no, &e.aldigiDersKodu);
}
当我阅读二进制文件时,我在控制台中看起来像 :
我的bin文件看起来像这样:
AytuncøA'v:A'vXÿæ¯Yalcinkaya°@Àþ(1,Aytunc,Yalcinkaya,M'víE'v°@“ÿ(@OsmanøA'v:A'vXÿæ¯Villikaya°@Àþ(2) (ÿÿ(r'vô@_Ùþÿÿÿ:A'vÍE'v°@“ÿ(@
但我想在控制台屏幕中查看此输出:
1 Aytunc Yalcinkaya M
答案 0 :(得分:0)
首先,当您保存到文件结构时,您可以/必须阅读结构。
while(fread(&e, sizeof(struct emp), 1, fp) == 1)
其次你必须将一个poiter传递给%s格式然后
printf("\n%s %s %s %s", e.name, e.surname, e.no, e.aldigiDersKodu);
或者至少
printf("\n%s %s %s %s", &e.name[0], &e.surname[0], &e.no[0], &e.aldigiDersKodu[0]);