为什么我想在文件后面追加一些数据但是不可以啊,最后显示的还是原来的。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct person
{
 int num;
 char name[10];
 float basic;
 float zhiwugongzi;
 float jintie;
 float yiliaobaoxian;
 float gongjijin;
 float sum;
}per[100]={01,"张望",1286,947,198,109,135,2034,02,"李明",1185,628,135,94,114,1740,03,"王小民",895,438,98,64,73,1294,04,"张效益",1350,868,210,116,150,2162};
int main()
{
 void swap(struct person per[],int b1,int z);
 void swap3(struct person per[],int z);
 struct person *p;
 int i,z,d10,b1;
 FILE *fp;
 p=per;
 z=0;
 if((fp=fopen("shujuwenjian","wb"))==NULL)
 {
  printf("can not open this");
  exit(0);
 }
 for(i=0;i<=10;i++)
 {
  fwrite(&per[i],sizeof(struct person),1,fp);
 }
 fclose(fp);
 printf("输入想显示信息的前面数字即可进行操作\n");
    printf("***********************************************\n");
 printf("\n");
    printf("     1:输入记录\n     2:显示记录(输入职工的ID,显示记录)\n     3:修改记录(进行内容修改并进行显示\n     4:查找记录(进行查找并显示)\n     5:删除记录\n     6:统计结果\n");//就为什么我想让他的前面有空格位置时就前两个可以后两个还是错的。
 printf("按7之返回主界面\n");
 printf("\n");
 printf("************************************************\n");
 printf("输入数字");
 scanf("%d",&i);//就怎末返回到主界面啊,case不行,别的呢?c怎末杨啊啊啊啊
 for(d10=0;d10<=100;d10++)
 {
        if(per[d10].num>0)
   z++;
 }
 if(i==1)
 {
  printf("此操作进入的是第一项,输入记录这一项\n");
  printf("       想增加的人数是");
  scanf("%d",&b1);
  swap(per,b1,z);//就想着怎末才能在后面加入,想到用文件就可以了吧,然后输入时又产生需哦呜,都是地址符,气死我了!!! 
 }
 return 0;
}

  void swap(struct person per[],int b1,int z)
 {
    int i,b2,d10;
    FILE *fp;
    b2=0;
      printf("显示在文件末尾加入新的数据前的数据文件\n");
      swap3(per,z);
    if((fp=fopen("shujujianli","a+"))==NULL)
    {
   printf("can not open");
   return;
    }
     printf("输入你想输入的学生数据\n");
    for(i=0;i<b1;i++)
    {
  printf("输入ID号\n");
        scanf("%d",&per[i].num);
  printf("输入姓名\n");
  scanf("%s",per[i].name);
  printf("输入基本工资\n");
  scanf("%f",&per[i].basic);
  printf("输入其他的各项工资 职务工资 津贴 医疗保险 公积金\n");
  scanf("%f%f%f%f",&per[i].zhiwugongzi,&per[i].jintie,&per[i].yiliaobaoxian,&per[i].gongjijin);
  printf("输入总工资\n");
  scanf("%f",&per[i].sum);
    }
       fseek(fp,0,2);
  for(i=0;i<z;i++)
   {
    if( fwrite(&per[i],sizeof(struct person),1,fp)!=1)
     printf("error ");

    }
     fclose(fp);
      for(d10=0;d10<=100;d10++)
   {
              if(per[d10].num>0)
       b2++;
   }
     printf("显示在末尾追加新的数据文件后的数据文件\n");
     swap3(per,b2);  
 }
    void swap3(struct person per[],int z)
 {
     FILE *fp;
      int i,n,q,w;
     char ch;
  w=z;
      if((fp=fopen("shujuwenjian","rb"))==NULL)
   {
  printf("can not open this");
  exit(0);
   }
    for(i=0;i<=w-1;i++)
    {
  fread(&per[i],sizeof(struct person),1,fp);
   printf("信息是 :ID号%3d 姓名%5s  基本工资%6.1f 各项工资%6.1f%6.1f%6.1f%6.1f%6.1f\n",per[i].num,per[i].name,per[i].basic,per[i].zhiwugongzi,per[i].jintie,per[i].yiliaobaoxian,per[i].gongjijin,per[i].sum);
    }
    fclose(fp);
      return ;
 }

 

qq_墨宝宝啊宝_04357478
浏览 1770回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP