CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

文件操作

楼主pressman(大苯熊)2005-05-18 18:07:44 在 C/C++ / C++ 语言 提问

现在有2个文件a.txt和b.txt  
  --a.txt中内容如下:  
  [PERSON]  
  jack=4000  
  david=2500  
  sun=3000  
  [PPP]  
  20050505xy=  
  20050508tt=  
  --完  
  --b.txt中内容如下:  
  [PERSON]  
  jack=4000  
  david=2500  
  [PPP]  
  20050505xy=  
  20050508tt=  
  20050510de=  
  --完  
  ,要求用C语言程序找出a.txt和b.txt的区别,并记录到一个名为log.txt的文件中  
   
  那么log.txt中应该记录的是:  
  [PERSON]  
  sun=3000   CANT   FIND   IN   b.txt    
  [PPP]  
  20050510de=   CANT   FIND   IN   a.txt    
   
  那位大哥帮帮忙,谢谢!  
  在线,分不够,再加  
  问题点数:100、回复次数:5Top

1 楼pressman(大苯熊)回复于 2005-05-18 18:08:37 得分 0

http://community.csdn.net/Expert/topic/4017/4017360.xml?temp=.6583826也是这个帖,一起结!Top

2 楼pressman(大苯熊)回复于 2005-05-18 18:18:15 得分 0

就比较a.txt中的行,在b.txt中是否有,没有就记录一下,  
  然后同样的道理,比较b.txt中的行,在a.txt中是否有,没有就记录一下.Top

3 楼lanshigang1984()回复于 2005-05-18 18:39:12 得分 1

社区怎么不能提问啊?  
  我们正在做C语言课程设计,我忙一个星期了,代码是写出来了  
  但是老是不能编译成功,我很急啊,明天就要交上去了啊,  
  请高手帮我看看,小弟在此谢过了!  
  题目是这样子的:  
  做一个学生成绩管理系统,要求如下:  
  1.主要功能:  
  (1)               能按学期、按班级完成对学生成绩的录入、修改     (1-3用函数实现)  
  (2)               能按班级统计学生的成绩   的总分及均分,并能根据学生的平均成绩进行排序     (TOTAL、AVERAGE、)  
  (3)               能查询学生成绩,不及格科目及学生名单(有相应的提示:请输入学号)。。。。。。)(4)               能按班级输出学生的成绩单  
  2.要求:   界面友好,易于操作  
   
  以下是我编的程序:  
  #include<stdio.h>  
  #include<malloc.h>  
  #include<string.h>  
  #include<conio.h>  
   
  #define   MAXSIZE   100  
  #define   ADDSIZE   50  
  #define   PT   elem+l->length  
  #define   N   4  
  typedef   struct   term{/*班级和学期的结构体*/  
          char   class1[10];  
          char   term1[10];  
  }term;  
  typedef   struct   student{/*学生成绩信息的结构体*/  
          term   st;/*班级和学期结构体放于此结构体中*/  
          char   num[10];  
          char   name[12];  
          float   course[4];  
          int   total;  
          int   average;  
          int   bit;  
  }lnode,*stu;  
   
  typedef   struct{  
          lnode   *elem;/*指向上个结构体的指针*/  
          int   size;/*最大能放lnode结构体成员的个数*/  
          int   length;/*当前长度*/  
  }sqack,*sq;  
  sqack   *l;  
  void   init(void)/*动态分配存储空间*/  
  {l->elem=(stu)malloc(MAXSIZE*sizeof(lnode));  
  l->length   =0;  
  l->size=MAXSIZE;  
  }  
   
   
  int   input(void)/*输入学生的信息*/  
  {lnode   *newbase,*p;  
          char   cla[10],ter[10],ch;  
  int   n,i;  
  if(l->length>=l->size){  
          newbase=(stu)realloc(l->elem,(l->size   +ADDSIZE)*sizeof(lnode));/*追加存储空间*/  
          l->elem   =newbase;  
          l->size   +=ADDSIZE;  
  }  
  p=l->elem;  
  do  
  {printf("输入班级和学期(学期用这种格式,如2005年上学期   2005   1,2005年下学期   2005   2;先输入班级,回车后再输入学期)\n");  
  gets(cla);  
  gets(ter);  
  printf("要输入多少个名单?");  
  scanf("%d",&n);  
  printf("输入学生的成绩\n学号\t姓名\t科目1\t科目2\t科目3\t科目4\n");  
  for(i=0;i<n;i++)  
  {scanf("%s%s%d%d%d%d",p->num   ,p->name,p->course[0],p->course[1],p->course[2],p->course[3]);  
  strcpy(p->st.class1,cla);  
  strcpy(p->st.term1,ter);  
  ++l->length   ;}  
  printf("要继续吗?(y/n)");  
  ch=getchar();}while(ch=='Y'||ch=='y');  
  }  
  int   change()/*修改学生的信息*/  
  {lnode   *p;  
    lnode   e;  
    int   flag=1,i;  
    char   s1[10],num1[10];  
    printf("输入学期和学号(输入学期以后按回车再输入学号):\n");  
    gets(s1);  
    gets(num1);  
    p=l->elem   ;  
    while(p<=(l->elem+l->length   )   &&   flag==1)/*查找要修改的学生的信息*/  
    {if(strcmp(p->num,num1)==0&&strcmp(p->st.term1,s1)==0);  
      flag=0;/*找到了*/  
    p++;}  
    p--;  
    if(flag==1)   printf("找不到此学号!\n");  
     
    printf("%s   %s",p->num,p->name);  
    for(i=0;i<N;i++)  
            printf("%d   ",p->course[i]);  
    printf("\n");  
    printf("输入修改信息\n");  
    scanf("%s%s%s%s",e.st.class1,e.st.term1,&e.num,e.name);  
    for(i=0;i<N;i++)  
              scanf("%d",&e.course[i]);  
    *p=e;  
  }  
  void   stat()/*统计学生的成绩*/  
    {lnode   tt[50];  
    char   ter[10],clas[10];  
    int   i,k;  
            printf("请输入学期和班级(输入学期后按回车再输入班级):\n");  
          for(i=0;ter[i]!='\n';i++)  
                  ter[i]=getchar();  
          for(i=0;clas[i]!='\n';i++)  
                  clas[i]=getchar();  
          same(ter,clas,tt,&k);/*把学期和班级相同的学生信息放在结构体数组tt中*/  
          sort(tt,&k);/*按学生成绩从高到低排序函数*/  
          print(tt,&k);/*输出学生的成绩*/  
    }  
   
  void   same(char   *t1,char   *t2,lnode   *t,int   *k)   /*把学期和班级相同的学生信息放在结构体数组tt中*/  
  {int   i=0;  
  lnode   *p,*q;  
  q=t;  
  p=l->elem   ;  
  while(p<=l->elem+l->length   )  
  {if(strcmp(p->st.term1,t1)==0&&strcmp(p->st.class1   ,t2)==0)  
  {*q=*p;q++;  
  i++;}  
  p++;}  
  *k=i;  
  }  
  int   sort(lnode   *p,int   *k)/*按学生成绩从高到低排序函数*/  
  {int   i;  
    lnode   *q,temp;  
  for(q=p;q<p+   *k;q++)  
  {q->total   =0;  
  for(i=0;i<N;i++)  
    q->total   =q->total   +q->course   [i];  
  q->average   =q->total   /N;  
  }  
  for(i=0;i<*k-1;i++)  
    for(q=p;q<p+*k-1-i;q++)  
            if(q->total<(q+1)->total){temp=*q;*q=*(q+1);*(q+1)=temp;}  
  }  
  void   print(londe   *q,int   *k)/*输出学生的成绩*/  
  {int   n;  
    lnode   *p;  
  p=q;  
  for(p=q;p<q+*k;p++)  
  {printf("%s   %s",p->num,p->name);  
  for(i=0;i<N;i++)  
    printf("%d   ",p->course[i]);  
  printf("%d   %f",p->total,p->average);  
  printf("\n");}  
  }  
  void   search()/*查找学生的成绩*/  
  {char   ch;  
  do  
  {printf("1   按学号查询\n2按姓名查询\n");  
    ch=getchar();  
    switch(ch)  
    {case   '1':   1search();break;  
    case   '2':   2search();break;  
    default:printf("错误!\n");  
    }printf("要继续查找吗?(y/n)");  
    ch=getchar()   }   while(ch=='y'&&ch=='Y');  
  }  
  void   1search()/*按学号查*/  
  {lnode   *p;  
    char   ter1[10];  
    int   i,flag=1;  
    p=l->elem;  
    printf("输入学号:");  
    gets(ter1);  
    for(p=l->elem;p<l->PT;p++)  
    {if(strcmp(p->num,ter1)==0)    
    {flag=0;  
            printf("%s   %s   ",p->st.term1,p->st.class1);  
    printf("%s   %s   ",p->num,p->name);  
    for(i=0;i<N;i++)  
            printf("%d   ",p->course[i]);  
    printf("%d   %3.1f",p->total,p->average);  
    printf("\n");}}  
    if(flag)   printf("没有找到!");  
  }  
  void   2search()/*按姓名查*/  
  {lnode   *p;  
    char   ter1[10];  
    int   i,flag=1;  
    p=l->elem;  
     
    printf("输入姓名:");  
    gets(ter1);  
    for(p=l->elem;p<l->PT;p++)  
    {if(strcmp(p->name,ter1)==0)    
    {flag=0;  
            printf("%s   %s   ",p->st.term1,p->st.class1);  
    printf("%s   %s",p->num,p->name);  
    for(i=0;i<N;i++)  
            printf("%d   ",p->course[i]);  
    printf("%d   %f",p->total,p->average);  
    printf("\n");}  
    }  
    if(flag)   printf("没有找到!")   ;  
  }  
  void   fail()/*查找不及格及学生名单*/  
  {int   i;  
  lnode   *p;  
  for(p=l->elem;p<l->   PT;p++)  
  {   for(i=0;i<N;i++)  
      if(p->course[i]<60)  
      {printf("%s   %s   ",p->st.class1,p->st.term1);  
      for(i=0;i<N;i++)  
              printf("%d   ",p->course[i]);  
      printf("%d   %f   ",p->total,p->average);  
      printf("\n");}}  
  }  
  void   output()/*按班级输出学生的成绩单*/  
  {lnode   tt[50];  
  int   k;  
          char   clas[10],ter1[10];  
          printf("输入要查询的班级和学期(输入班级后按回车输入学期):\n");  
          gets(clas);  
          gets(ter1);  
          same(ter1,clas,tt,&k);/*/*把学期和班级相同的学生信息放在结构体数组tt中*/*/  
          print(tt,&k);/*输出学生的成绩*/  
  }  
   
   
  int   main()  
  {char   ch;  
  do  
  {printf("请选择:\n");  
    printf("1   对学生成绩的录入\n2   对学生成绩的修改\n3   统计学生成绩\n4   查询学生成绩\n5查找不及格科目及学生名单\n6   按班级输出学生成绩单\n   ");  
    ch=getchar();  
    switch(ch)  
    {case   '1':   input();break;  
    case   '2':change();break;  
    case   '3':stat();break;  
    case   '4':search();break;  
    case   '5':fail();break;  
    case   '6':output();break;  
  default:printf("错误!\n");  
    }  
    printf("要继续吗?(y/n)");  
    ch=getchar();  
  }while(ch='y'||ch='Y');  
  return;  
  getch();  
  }  
  Top

4 楼zjlang(阿亮)回复于 2005-05-18 18:50:07 得分 99

楼上的搞乱............  
  不想给分就说嘛.......Top

5 楼pressman(大苯熊)回复于 2005-05-18 20:27:23 得分 0

TO   lanshigang1984()   (   )   信誉:100   :  
        我的问题还没解决呀,你捣什么乱呀?Top

相关问题

  • 文件操作!
  • 文件操作
  • 文件操作?
  • 文件操作
  • 文件操作
  • 文件操作
  • 文件操作
  • 文件操作!
  • 文件操作
  • 文件操作

关键词

  • 学生
  • 学期
  • 学号
  • 结构
  • 文件
  • 修改
  • lnode
  • ter
  • 班级
  • 成绩

得分解答快速导航

  • 帖主:pressman
  • lanshigang1984
  • zjlang

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo