标题:这是一道关于文件保存的c语言的编程题——我是个初学者 求详解:不知道哪个 ...
只看楼主
蚂蚁爱编程
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2011-12-19
结帖率:100%
已结贴  问题点数:5 回复次数:7 
这是一道关于文件保存的c语言的编程题——我是个初学者 求详解:不知道哪个错了无法输入
#include<stdio.h>
   #include<conio.h>
struct student
{  int sno;
   char name[30] ;
   char sex;
   int score[3];
   float sum;
   float average;
} stu[1000];
int main()
{  void save(int n);
   void read(int n);
   int n;
   int i;
   scanf ("%d",&n);

   for(i=0;i<n;i++)
   {scanf("%d%s%s%d%d%d",&stu[i].sno,stu[i].name,stu[i].sex,&stu[i].score[0],
   &stu[i].score[1],&stu[i].score[2]) ;
   stu[i] .sum=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]);
   stu[i] .average=stu[i].sum/3 ;  }
   printf("....................................\n");
   save(n);
   read(n);
   printf("....................................\n") ;
   getch();
   return 0;
}
  void save(int n)
  {FILE *fp;
  int i;
  if((fp=fopen("stud.dat","wb"))==NULL)
  {printf("cannot open file\n");
  return;
  }
  for(i=0;i<n;i++)
  if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
  printf("file write error\n");
  fclose(fp) ;
  }
  void read(int n)
  {int i;
    FILE *fp;
    if((fp=fopen("stud.dat","rb"))==NULL)
    {printf("cannot open file\n");
    }
   for(i=0;i<n;i++)
   {fread(&stu[i],sizeof(struct student),1,fp);

   printf("%d%s%s%d%d%d",&stu[i].sno,&stu[i].name,&stu[i].sex,&stu[i].score[0],
   &stu[i].score[1],&stu[i].score[2] );}

   fclose(fp);
}
搜索更多相关主题的帖子: c语言 编程 average include 
2011-12-19 12:30
蚂蚁爱编程
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2011-12-19
得分:0 
额……求回复啊…………这道题快搞死我了……“cannot open file”。屏幕上就只有这句话,不能输入其他东西!!
2011-12-19 20:28
jia393741127
Rank: 2
等 级:论坛游民
帖 子:16
专家分:29
注 册:2011-12-20
得分:2 
你这个错误不是很明显 :scanf("%d%s%s%d%d%d",&stu[i].sno,stu[i].name,stu[i].sex,&stu[i].score[0],  把里面的stu[i].sex改成&stu[i].sex 因为它是字符 不是字符串!!
2011-12-20 08:36
xuxiong517
Rank: 2
等 级:论坛游民
帖 子:35
专家分:29
注 册:2011-11-1
得分:2 
在创建文件时要return 0
2011-12-20 14:54
蚂蚁爱编程
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2011-12-19
得分:0 
这些不是原因,页面就只显示 不能打开文件  不能输入数值
2011-12-20 20:14
jia393741127
Rank: 2
等 级:论坛游民
帖 子:16
专家分:29
注 册:2011-12-20
得分:0 
回复 5楼 蚂蚁爱编程
哦,不好意思,上次只是说程序问题错的 地方在哪  至于为什么不能打开文件 是你F盘根本没那个11的文件夹又何来打开文件呢
2011-12-22 20:30
霄栋
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-12-25
得分:0 
#include<stdio.h>
#include<stdlib.h>
struct student
{  int sno;
   char name[30] ;
   char sex;
   int score[3];
   float sum;
   float average;
} stu[1000];
int main()
{  void save(int n);
   void read(int n);
   int n;
   int i;
   printf("请输入学生人数:");
   scanf ("%d",&n);
   printf("请输入学生信息\n    学号    姓名    性别    数学    英语    化学\n");
   for(i=0;i<n;i++)
   {printf("学生%d   ",i);   
   scanf("%d%s%s%d%d%d",&stu[i].sno,stu[i].name,&stu[i].sex,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
   stu[i].sum=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]);
   stu[i].average=stu[i].sum/3;
   }
   printf("....................................\n");
   save(n);
   read(n);
   printf("....................................\n");
   getchar();
   return 0;
}


void save(int n)
  {FILE *fp;
  int i;
  if((fp=fopen("stud.dat","wb"))==NULL)
  {printf("cannot open file\n");
   exit (1);
  }
  for(i=0;i<n;i++)
  if(fwrite(&stu[i],sizeof(stu[i]),1,fp)!=1)
     printf("file write error\n");
  fclose(fp) ;
}


void read(int n)
  {int i;
    FILE *fp;
    if((fp=fopen("stud.dat","rb"))==NULL)
    {printf("cannot open file\n");
     exit (1);
    }
   for(i=0;i<n;i++)
   {fread(&stu[i],sizeof(struct student),1,fp);
    printf("%d %s %s %d %d %d\n",stu[i].sno,stu[i].name,stu[i].sex,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
   }
  fclose(fp);
}
2011-12-25 17:28
霄栋
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-12-25
得分:0 
抱歉,上面的代码中,把所有格式化 stu[i].sex 的格式化字符由 %s 改成 %c 才可以运行
2011-12-25 18:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-358121-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.065091 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved