妖舍 2022-04-15 04: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 07: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();
    }
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    妖舍 2022-04-15 07:50

    感谢!!!

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月15日
  • 创建了问题 4月15日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部