#include<stdlib.h> #define N 10 typedef struct { char no[15]; char name[10]; float score[3]; float aver; }STU; void Input_Info(STU a[], int n) { /********** Begin **********/ for(int i=0; i<n; i++) { scanf("%s%s", a[i].no, a[i].name); for(int j=0; j<3; j++) { scanf("%f", &a[i].score[j]); a[i].aver+=a[i].score[j]/3; } } /********** End **********/ } void Write_Info(STU a[], int n){ /********** Begin **********/ FILE *fp; fp=fopen("record", "a"); if(fp==NULL) { printf("不能打开文件!\n"); exit(0); } fwrite(a, sizeof(STU), n, fp); fclose(fp); /********** End **********/ }哪里错了
时间: 2023-07-06 22:35:32 浏览: 101
栈和队列的基础上设计模拟停车场管理程序 停车场管理问题 #include<stdio.h> #include<stdlib.h> struct { char status; int num; int time; }a; /*命令的结构*/ typedef struct{ int num; int time; }Element; struct { Element *base; Element *top; in
这段代码存在一些问题:
1. 在 `Input_Info` 函数中,`aver` 没有被初始化为0,导致平均分计算不正确。
2. 在 `Write_Info` 函数中,使用了 `fwrite` 将结构体数组写入文件,但结构体中包含指针类型的成员,无法正确地写入文件。
建议使用 `fprintf` 函数将结构体成员逐个写入文件,例如:
```
void Write_Info(STU a[], int n) {
FILE *fp;
fp = fopen("record", "a");
if (fp == NULL) {
printf("不能打开文件!\n");
exit(0);
}
for (int i = 0; i < n; i++) {
fprintf(fp, "%s %s %.2f %.2f %.2f %.2f\n", a[i].no, a[i].name, a[i].score[0], a[i].score[1], a[i].score[2], a[i].aver);
}
fclose(fp);
}
```
另外,建议在函数中添加一些错误处理机制,例如对文件打开失败进行处理等。
阅读全文