妖舍 2022-04-15 12:01 采纳率: 100%
浏览 30
已结题

如何输出结构体中指定一项变量信息的全部数据

如下图部分代码所示
我建立了一个结构体users,然后想输出结构体中身份为一般教师的全部教师信息,请问这个应该怎么实现呀?

typedef struct User_basicinfo
{
    char id[15];
    char paw[20];
    char name[15];
    char sex[5];
    char shenfen[20];
}Users;


void check_3_()                                                                                    //浏览一般教师名单
{
    int i=0;
    Users a[];
    FILE *pf=fopen("users.txt","r");
    if(pf==NULL)
    {
        printf("      打开文件失败\n");
        return ;
    }
    fread(&a, sizeof(struct User_basicinfo),1,pf);
     while (1)
           {
               if (strcmp(a[i].shenfen, "一般教师") == 0)         //如果有此类教师
               {
                   i++;
                   printf("----------------------------------------------------------------------------------------------------\n");
                   printf("教师编号  姓名\n");
                   printf("%20s%9s\n",a[i].id,a[i].name);
                   break;
               }

               else
               {
                   if (!feof(pf))  //如果文件没有读完

                   {
                       fread(&a, sizeof(struct User_basicinfo),1,pf);
                   }

                   else
                   {
                       printf("\t\t\t                   ◆无此类教师! ");
                       Sleep(500);
                       fclose(pf);
                       return;
                   }
               }
       }


     printf("\n---------------------------------◇所有信息已显示,按回车返回主菜单◇-------------------------------\n");
     fclose(pf); pf=NULL;
     getchar();
     system("pause");
     checkmenu();
}

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-04-15 15:17
    关注

    修改处见注释,供参考:

    #include <stdio.h>
    typedef struct User_basicinfo
    {
        char id[15];
        char paw[20];
        char name[15];
        char sex[5];
        char shenfen[20];
    }Users;
    
    
    void check_3_() //浏览一般教师名单
    {
        int i = 0;
        Users tmp;   //Users a[];
        FILE* pf = fopen("users.txt", "r");
        if (pf == NULL)
        {
            printf("      打开文件失败\n");
            return;
        }
        //fread(&a, sizeof(struct User_basicinfo), 1, pf);
        while (1)
        {
            if (fread(&tmp, sizeof(struct User_basicinfo), 1, pf) == 1) {
                if (strcmp(tmp.shenfen, "一般教师") == 0)         //如果有此类教师
                {
                    if (i == 0) {
                        printf("----------------------------------------------------------------------------------------------------\n");
                        printf("教师编号  姓名\n");
                    }
                    printf("%20s%9s\n", tmp.id, tmp.name);
                    i++;
                    //break;
                }
            }
            else
                break;
        }
        fclose(pf);
        if (!i)
            printf("\t\t\t                   ◆无此类教师! ");
    
                //{
                //if (!feof(pf))  //如果文件没有读完
    
                //{
                //    fread(&a, sizeof(struct User_basicinfo), 1, pf);
                //}
    
                //else
                //{
        
                //    Sleep(500);
                //    fclose(pf);
                //    return;
                //}
            //}
            //}
            //}
        printf("\n---------------------------------◇所有信息已显示,按回车返回主菜单◇-------------------------------\n");
        //fclose(pf); pf = NULL;
        getchar();
        system("pause");
        checkmenu();
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月23日
  • 已采纳回答 4月15日
  • 创建了问题 4月15日

悬赏问题

  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上