把结构体的值赋给数组,用数组输出却全是一些负值
程序代码:
这个程序最后一个子函数打印时数据就全部变成了负数,求解,哪里错了
#include"stdio.h"
#include"math.h"
#include"string.h"
#include"stdlib.h"
#include"time.h"
#define N 30
#define ADDRESS "D:\\test.txt"
FILE *fp;
struct information
{
int Math;
int Chinese;
int English;
}stu[N];
void main()
{
void f1();
int i,a;
srand(time(NULL));
if((fp=fopen(ADDRESS,"a+"))==NULL)
{
printf("cannot open this file\n");
exit(0);
}
for(i=0;i<N;i++) //把文件中的内容储存到结构体中
{
fread(&stu[i],sizeof(struct information),1,fp);
}
fclose(fp);
printf("1、录入成绩\n2、把成绩赋给一个数组后输出\n");
scanf("%d",&a); //选择菜单的命令
while(a<1||a>2)
{
printf("输入错误,请重新输入!\n");
scanf("%d",&a);
}
if((fp=fopen(ADDRESS,"a"))==NULL)
{
printf("cannot open this file\n");
exit(0);
}
switch(a)
{
case 1:
for(i=0;i<N;i++);
{
stu[i].Math=rand()%100; //这里会产生0~99的数字,随机数的使用
stu[i].Chinese=rand() % 100;
stu[i].English=rand() % 100;
fwrite(&stu[i],sizeof(struct information),1,fp);
}
case 2:
f1();
}
fclose(fp);
}
void f1()
{
void print(int x[N]);
int i,math[N],chinese[N],english[N];
for(i=0;i<N;i++)
{
stu[i].Math=math[i];
stu[i].Chinese=chinese[i];
stu[i].English=english[i];
}
printf("------------------------------------------\n");
printf(" 数学成绩统计\n");
print(math);
printf("------------------------------------------\n");
printf(" 语文成绩统计\n");
print(chinese);
printf("------------------------------------------\n");
printf(" 英语成绩统计\n");
print(english);
printf("------------------------------------------\n");
}
void print(int x[N])
{
int i=0;
for(;i<N;i++)
{
printf("%d\t",x[i]);
}
}






