当前位置: 代码迷 >> C语言 >> 请各位来指点下!
  详细解决方案

请各位来指点下!

热度:100   发布时间:2006-01-14 11:45:00.0
请各位来指点下!

我要用结构体写个成绩判断.然后写进文件再读出来;下面是我的代码.

我现在成绩判断写好拉。可是写进文件后。文件内容是乱码.而且不能读.

请各位帮忙啊!能把文件读写这里给个代码说明最好!

谢谢拉!
我搞不清楚如何对结构体进行文件读取操作.能帮我对这里详细说明最好.谢谢
#include<stdio.h>
void aaa(struct cat stu[],int size);
struct cat
{
char name[20];
int termlyexam;
int midterm;
int endterm;
double finalgrade;
};
void main()
{
struct cat str[20];
int i=0;
char pd;
FILE *fp;
int k;
struct cat s[20];
do{
printf("输入姓名");
scanf("%s",&str[i].name);
printf("平时成绩:");
scanf("%d",&str[i].termlyexam);
printf("期中成绩:");
scanf("%d",&str[i].midterm);
printf("期末成绩:");
scanf("%d",&str[i].endterm);
i=i+1;
printf("继续输入吗?(y/n):");
scanf(" %c",&pd);
}while(pd=='y'||pd=='Y');
printf("\n\n以下是成绩单:\n");
printf("姓 名\t平时成绩\t期中成绩\t期末成绩\t最终成绩\n");
printf("========\t========\t========\t========\t========\n");
aaa(str,i);
fp=fopen("c:\\123.txt","wb");
if (fp==NULL)
printf("打开错误");
fwrite(str,sizeof(struct cat),20,fp);
fclose(fp);
fp=fopen("c:\\123.txt","rb");
if (fp==NULL)
printf("打开错误");
if(fread(s,sizeof(struct cat),4,fp)!=4)
{
if(feof(fp))
printf("end of");
else
printf("cuowu");
}
printf("%s",s[20]);
fclose(fp);
}
void aaa(struct cat stu[],int size)
{
int j,number=0;//number是最高成绩学生的编号,j是记录条数
double tmp;
for(j=0;j<size;j++)//计算最终成绩
{
stu[j].finalgrade=stu[j].termlyexam*0.1+stu[j].midterm*0.2+stu[j].endterm*0.7;
printf("%-s\t\t%-d\t\t%-d\t\t%-d\t\t\%-3.1f\n",stu[j].name,stu[j].termlyexam,stu[j].midterm,stu[j].endterm,stu[j].finalgrade);
}
// printf("%d",j-1);
//求成绩最高的学生
tmp=stu[0].finalgrade;
for(j=1;j<size;j++)
{
if(stu[j].finalgrade>tmp)
{
tmp=stu[j].finalgrade;
number=j;
}
}
printf("成绩最好的学生是:%s,最终成绩是:%3.1f\n\n",stu[number].name,stu[number].finalgrade);

}


----------------解决方案--------------------------------------------------------

fwrite和fread只能写二进制文件吧,所以写完后你打开文件肯定是乱码,应该能读出来,只是printf("%s",s[20]);好象不对吧

偶也是菜鸟,说的不对高手来改正


----------------解决方案--------------------------------------------------------
  相关解决方案