已知如下数据
void search_name()//名字搜索模块
{
int i,w1=0;
char name[20];
FILE *fp;
if((fp=fopen("emp.txt","rb"))==NULL)
{
printf("Cannot open file\n");
exit(1);
}
printf("Who do you want to search?:");
scanf("%s",&name);
for(i=0;fread(&emp[i],sizeof(struct employee),1,fp);i++)
{
if(strcmp(emp[i].name,name)==0)
w1++;
}
if(w1==0)
{
printf("\tThere is no such person.\n");
}
else
{
printf("NO. ID month Name Sex Gross_pay Incidental Tax Net_pay\n");
for(i=0;fread(&emp[i],sizeof(struct employee),1,fp);i++)
{
if(strcmp(emp[i].name,name)==0)
printf("%3d %d %2d %10s %5s %.1f %.1f %.1f %.1f\n",i+1, emp[i].ID, emp[i].month, emp[i].name, emp[i].sex, emp[i].gross_pay,
emp[i].incidental,emp[i].tax, emp[i].net_pay);
}
}
fclose(fp);
printf_back();
}
运行结果如下
如果去掉第二个 fread(&emp[i],sizeof(struct employee),1,fp)
运行结果如下
去掉后虽然搜索成功,但会直接跳过接下来的函数而直接退出程序。这是为什么呢?怎么解决呢?