weixin_43500633 2018-12-22 17:55 采纳率: 0%
浏览 434

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)

运行结果如下图片说明

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

  • 写回答

1条回答 默认 最新

  • weixin_43500633 2018-12-22 11:43
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集