c primer plus 第十四章课后编程6题

#include <stdio.h>
#include <stdlib.h>
#define MAX 20

typedef struct info {
int nmber;
char fname[MAX];
char sname[MAX];
int second;
int hit;
int run;
int dot;
}INFOR;

int main(int argc, char *argv[])
{
int i=0;
//j 代表是否找到队员的队员
int j=0;
int count=0;
FILE *fp;
INFOR *aa;
INFOR bb;

//打开文件
if((fp=fopen(argv[1],“r”))==NULL)
{
fprintf(stderr,“Usage:%s filename\n”,argv[1]);
exit(2);
}
while(fscanf(fp,"%d %s %s %d %d %d %d\n",&bb.nmber,bb.fname,bb.sname,
&bb.second,&bb.hit,&bb.run,&bb.dot)!=EOF)
{

j=0;
for(i=0;i<count;i++)
{
if(aa[i].nmber==bb.nmber)
  {
      j=1;
      aa[i].second+=bb.second;
      aa[i].hit+=bb.hit;
      aa[i].run+=bb.run;
      aa[i].dot+=bb.dot;
  }
}
if(!j)
{
    if(count==0)
    aa=(INFOR *)malloc(sizeof(INFOR) * ++count);
    else
        aa=(INFOR *)realloc(aa, sizeof(INFOR) * ++count);
    aa[count-1]=bb;
   
}

}
for(i=0;i<count;i++)
{
printf("%d %s %s %d %d %d %d %.2f\n",aa[i].nmber,
aa[i].fname,
aa[i].sname,
aa[i].second,
aa[i].hit,
aa[i].run,
aa[i].dot,
(double)aa[i].second/(double)aa[i].hit);
}
free(aa);
fclose(fp);
return 0;
}
/* 测试文件
5 Aaaa Dddd 4 3 2 1
4 Bbbb eeee 3 2 1 1
5 Aaaa Dddd 3 2 2 2
6 Jkkk kkkk 5 2 2 1
4 Bbbb eeee 2 1 1 1
*/

发布了85 篇原创文章 · 获赞 1 · 访问量 1889

猜你喜欢

转载自blog.csdn.net/Tekkenwxp/article/details/102761864