C语言关于搜索函数的求助

已知如下数据图片说明

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)

运行结果如下图片说明

去掉后虽然搜索成功,但会直接跳过接下来的函数而直接退出程序。这是为什么呢?怎么解决呢?

在第二次循环前面先把文件指针复位就解决了