文件保存
下面的程序为什么在64位运行时会出现图片上的错误,而在32位上运行没有这种问题,我的系统是64位,怎么解决呢?#include <stdio.h>
FILE *fp2;
struct student
{
long int num; //声明有名结构体
char name[20]; //学生名字
float chinese; //语文成绩
float math; //数学成绩
}student[100],stu[100]; //一批学生,数量较大,定义数组student,stu各有100个元素
void main()
{fp2=fopen("d:\\学生.out","w");
char star[]={"****************************************"};
char message1[]={" 1--------------输入信息"};
char message2[]={" 2--------------成绩排序"};
char message3[]={" 3--------------保存"};
puts (star);
puts (message1);
puts (message2);
puts (message3);
puts (star);
int a,j,i,n;
float av,average[100]; //平均分
printf("请输入上述编号:\n");
scanf("%d",&a);
//printf("a=%d\n",a);
if(a==1) //输入学生信息
{
printf("请输入学生人数\n");
scanf("%d",&n);
printf("学号 姓名 语文成绩 数学成绩\n");
for(i=0;i<n;i++)
{
scanf("%ld %s %f %f",&student[i].num,&student[i].name,&student[i].chinese,&student[i].math);
//printf("%ld %s %f %f",student[i].num,student[i].name,student[i].chinese,student[i].math);
}
}
printf("请输入上述编号\n");
scanf("%d",&a);
if (a==2) //计算平均分和排序
{
printf("学号 姓名 语文成绩 数学成绩 平均成绩\n");
for (i=0;i<n;i++) //计算平均分
{
average[i]=(student[i].chinese+student[i].math)/2;
printf("%ld %s %f %f %f\n",student[i].num,student[i].name,student[i].chinese,student[i].math,average[i]);
}
printf("学号 姓名 语文成绩 数学成绩 平均成绩\n");
//fprintf(fp2,"学号 姓名 语文成绩 数学成绩 平均成绩\n");
for(j=0;j<n;j++) //排序,从大到小
for(i=0;i<n-j;i++)
if(average[i]<average[i+1])
{
av=average[i],stu[i]=student[i];
average[i]=average[i+1],student[i]=student[i+1];
average[i+1]=av,student[i+1]=stu[i];
//printf("%d\n",average[i]);
}
for(i=0;i<n;i++)
printf("%ld %s %f %f %f\n",student[i].num,student[i].name,student[i].chinese,student[i].math,average[i]);
//fprintf(fp2,"%ld %s %f %f %f\n",student[i].num,student[i].name,student[i].chinese,student[i].math,average[i]);
}
printf("请输入上述编号\n");
scanf("%d",&a);
if(a==3) //文件保存
for(i=0;i<n;i++)
//printf("%ld %s %f %f %f\n",student[i].num,student[i].name,student[i].chinese,student[i].math,average[i]);
fprintf(fp2,"学号 姓名 语文成绩 数学成绩 平均成绩\n");
fprintf(fp2,"%ld %s %f %f %f\n",student[i].num,student[i].name,student[i].chinese,student[i].math,average[i]);
fclose(fp2);
}