把结构体的值赋给数组,用数组输出却全是一些负值
程序代码:
这个程序最后一个子函数打印时数据就全部变成了负数,求解,哪里错了 #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]); } }