我正在尝试从二进制文件中读取学生记录 (SREC)。该文件肯定包含完整的记录(之前的运行写入该文件)。在我的输出中,我收到两条记录的两次“错误:无法从文件中读取记录”语句。顶部的 printf(Reading record, numR) 显示 3 次,所以我知道 while 循环在应该达到 eof 时进入了 3 次。
有任何想法吗?提前致谢!
/*Create and populate all 4 lists if lname list exists from previous usage*/
if((readL = fopen("last", "rb")) == NULL)
{
printf("\nNew file will be created after server terminates.\n");
created = 1;
}
else
{
created = 0;
/*Read in record from binary file*/
while(!feof(readL))
{
numR++;
printf("Reading record %d\n", numR);
/*Create new temporary SREC*/
newSREC = (SREC*)malloc(sizeof(SREC));
newSREC2 = (SREC*)malloc(sizeof(SREC));
newSREC3 = (SREC*)malloc(sizeof(SREC));
newSREC4 = (SREC*)malloc(sizeof(SREC));
/*Read in one record from file*/
if(fread(newSREC, sizeof(SREC), 1, readL) < 1)
{
newSREC2 = newSREC;
newSREC3 = newSREC;
newSREC4 = newSREC;
firstL = insert(newSREC, 1, firstL);
firstF = insert(newSREC2, 2, firstF);
firstS = insert(newSREC3, 3, firstS);
firstG = insert(newSREC4, 4, firstG);
}
else
{
printf("ERROR: Could not read record from file.\n");
}
}
fclose(readL);
}