文件操作???
#include<stdio.h>#include<stdlib.h>
FILE *fp1;
FILE *fp2;
void read(struct stu1 *m);
void fwrite(struct stu2 *n);
void aver(struct stu1 *k,struct stu2 *j);
struct stu1
{
char name[20];
long int xuehao;
int xueqian;
int xuezhong;
int xuemo;
}xue1[10],*p;
struct stu2
{
char name[20];
long int xuehao;
int xueqian;
int xuezhong;
int xuemo;
float aver;
}xue2[10],*q;
void main()
{
if((fp1=fopen("D:\\VC++6.0\\MSDev98\\MyProjects\\文件读写操作\\stud.txt","r+"))==NULL)
{
printf("打开文件错误,请确认文件具体位置。\n");
getchar();
exit(1);
}
if((fp2=fopen("D:\\VC++6.0\\MSDev98\\MyProjects\\文件读写操作\\aver.txt","w+"))==NULL)
{
printf("打开文件错误,请确认文件具体位置。\n");
getchar();
exit(1);
}
p=xue1;
read(p);
rewind(fp1);
p=xue1;
aver(p,q);
getchar();
p=xue1;
q=xue2;
rewind(fp1);
rewind(fp2);
fwrite(q);
getchar();
fclose(fp1);
fclose(fp2);
}
void read(struct stu1 *m)
{
int i;
for(i=0;i<10;i++,m++)
{
fread(m,sizeof(struct stu1),10,fp2);
printf("%s %ld %d %d %d\n",m->name,m->xuehao,m->xueqian,m->xuezhong,m->xuemo);
}
}
void aver(struct stu1 *k,struct stu2 *j)
{
int i;
float aver;
for(i=0;i<10;i++,k++,j++)
{
aver=(float)(j->xueqian+j->xuezhong+j->xuemo)/3;
j->aver=aver;
}
}
void fwrite(struct stu2 *n)
{
int i;
for(i=0;i<10;i++,n++)
{
fwrite(n,sizeof(struct stu2),10,fp2);
printf("%s %ld %d %d %d %f\n",n->name,n->xuehao,n->xueqian,n->xuezhong,n->xuemo,n->aver);
}
}
已知在一个ASCII“stud.txt”,有10个学生的记录,每条记录有4项数据,第1项为学号(int型),第2、3、4项为成绩(float型),编写一个程序从该文件中将这些学生的数据读出来,计算每个人的平均成绩,然后在将原有数据和计算出的平均成绩写到另外一个ASCII“aver.txt”中
我的问题是:在stud.txt文件已经输入了10个学生的数据;但我读入内存,再输出却是显示都是0;请各位帮帮我看看;另我的程序虽然没有问题,但看起来有点别扭。希望各们大大帮我改正。谢谢。