如何提取文件中结构体数组的个数?

职工档案管理系统
将职工数据存入结构体数组中,再存到txt文件里,现在的问题是在原有的基础上再次添加一个职工数据,下面的函数可以正确读取职工人数,但是再添加第二个职工数据人数却不变了!!是这个计算职工人数的函数有问题,还是添加一个职工数据的函数有问题?

struct the_workers//职工结构数组
{
    long long num;//12位工号
    char name[100];//姓名
    char sex[10];//性别
    int birth;//生日
    int grade;//工资等级
    float salary;//工资金额
}workers[1000],*p;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
int wnum()//计算职工人数
{
    int num=0;
    FILE *fp;
    fp=fopen("workers.txt","r");
    while(!feof(fp))
        if(fread(&workers[num],sizeof(struct the_workers),1,fp)==1)
            num++;
    if(num==0)
    {
        printf("无记录!\n");
        return;
    }
    fclose(fp);
    return num;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
int addwork()//添加一个职工数据
{
    int i,num;
    num=wnum();
    p=workers;
    FILE *fp,*tp;
    fp=fopen("workers.txt","a+");
    printf("请添加职工档案信息:\n\n");
    scanf("%lld%s%s%d%d%f",&p->num,p->name,p->sex,&p->birth,&p->grade,&p->salary);
    fwrite(workers,sizeof(struct the_workers),1,fp);
    printf("添加成功!\n");
    num++;
    fclose(fp);

 

鞍山 ,徐州 ,南昌办理毕业证书【+V:bz65321】

posted @ 2020-10-29 23:18  we1001  阅读(239)  评论(0)    收藏  举报