Как распечатать до конца файла, используя struct?
В моем struct
У меня есть поля
struct records {
int link;
double gate;
char bar;
};
И по моему main()
int main(int argc, char* argv[]){
struct records rec;
if(argc<2){//no paramaters
//return error
}
FILE *fp=fopen(argv[1], "rb");
if(fp==NULL){//no file
//return error
}
while(!feof(fp)){ //fread for each struct field
fread(&rec.link, sizeof(records.link), 1, fp);
fread(&rec.gate, sizeof(records.gate), 1, fp);
fread(&rec.bar, sizeof(records.bar), 1, fp);
printf("%d, %f, %c", rec.link, rec.gate, rec.bar);
} //DONE ON PURPOSE!!!
fclose(fp);
return 0;
}
Но это печатает последнюю запись дважды. Я пробовал вариации while
а также feof
лайк
while(1){
if(feof(fp)!=0){
break;
fread...
}
Но все они дважды распечатывают последнюю и только последнюю запись. Каждая другая запись распечатывается один раз, как и предполагалось. Почему это происходит и как мне заставить это работать должным образом?