sunum.c
上传用户:tamljx
上传日期:2021-06-04
资源大小:60k
文件大小:3k
源码类别:

家庭/个人应用

开发平台:

C/C++

  1. /*    sunum.c按家庭成员序号排序浏览用户信息                   */
  2. #include "stdio.h"
  3. void SortByUserNum()
  4.  {
  5.     int i,j,k;
  6.     user TmpS;
  7.     user s[SIZE];/*SIZE,在shead.h头文件中定义的常量,值为100  */
  8.     int recNumber = 0;
  9.     char DataFile[40] = "yonghu";
  10.     FILE *fp;/*====fp指针指向存储数据的文件名====*/
  11.     fp=fopen(DataFile,"rb");
  12.     if (fp == NULL)
  13.     {
  14.         printf("nOpen file %s fail!End with any keyn",DataFile);
  15.         perror("Open file fail");
  16.         getch();
  17.         exit(1);
  18.     }
  19.    /*将文件中要排序的信息存入结构体数组*/
  20.     while((fread(&TmpS,sizeof(user),1,fp)) != (int)NULL)
  21.     {
  22.         s[recNumber].Number = TmpS.Number;
  23.         strcpy(s[recNumber].Name, TmpS.Name);
  24.         strcpy(s[recNumber].ps,TmpS.ps);
  25.         s[recNumber].power = TmpS.power;
  26.         recNumber++;
  27.     }
  28.     fclose(fp);
  29. /*====如果文件中有记录,则将各条记录按序号排序===*/
  30.     if(recNumber>1)
  31.     {
  32.         /*====用选择排序法进行按序号的排序====*/
  33.         for(i=0;i<recNumber-1;i++)
  34.         {
  35.             k = i;
  36.             for(j=i+1;j<recNumber;j++)
  37.             {
  38.                 if(s[k].Number<s[j].Number) k = j;
  39.             }
  40.             TmpS.Number = s[k].Number;
  41.             strcpy(TmpS.Name,s[k].Name);
  42.             strcpy(TmpS.ps,s[k].ps);
  43.             TmpS.power = s[k].power;
  44.             s[k].Number = s[i].Number;
  45.             strcpy(s[k].Name,s[i].Name);
  46.             strcpy(s[k].ps,s[i].ps);
  47.             s[k].power = s[i].power;
  48.             s[i].Number = TmpS.Number;
  49.             strcpy(s[i].Name,TmpS.Name);
  50.             strcpy(s[i].ps,TmpS.ps);
  51.             s[i].power = TmpS.power;
  52.         }
  53.         /*====将排序好的结构体记录写入文件====*/
  54.         fp=fopen(DataFile,"wb+");
  55.         if (fp == NULL)
  56.         {
  57.             printf("nSet up file %sfail !end with anykey.n",DataFile);
  58.             perror("Set up fail");
  59.             getch();
  60.             exit(1);
  61.         }
  62.         for(i=0; i<recNumber; i++)
  63.         {
  64.             if(fwrite(&s[i],sizeof(user),1,fp)!=1)
  65.             {
  66.                 printf("nWrite file %s fail!end with anykey.n",DataFile);
  67.                 perror("Write file fail!");
  68.                     getch();
  69.                     exit(1);
  70.             }
  71.         }
  72.         fclose(fp);
  73.     }
  74.      /*====显示排序后的文件====*/
  75.     printf("The content in the user file is:.n",DataFile);
  76.     printf("Content as follow:n");
  77.     fp=fopen(DataFile,"rb");
  78.     if (fp == NULL)
  79.     {
  80.         printf("nOpen file%sfail!End with any key n",DataFile);
  81.         perror("Open file fail");
  82.         getch();
  83.         exit(1);
  84.     }
  85.     printf("nNumbertNametpstpowern");
  86.     while(fread(&TmpS,sizeof(user),1,fp) != (int)NULL)
  87.     {
  88.         printf("n%ldt%st%st%dn",TmpS.Number,TmpS.Name,TmpS.ps,TmpS.power);
  89.     }
  90.     fclose(fp);
  91.  }