为什么#include<stdio.h> #include<stdlib.h> #include<windows.h> int main() { FILE *fp,*fp1; int a; int i,o; printf("How much student need enter?\n"); scanf("%d",&o); struct student { int nember; char name; int grade1; int grade2; int grade3; float grade; }p[100]; for(i=0;i<o;i++) { getchar(); p[i].nember=i+1; printf("\nPlease enter student:\n"); printf("%d.",p[i].nember); scanf("%s",&p[i].name); printf("\nPlease enter the three grade:\n"); scanf("%d %d %d",&p[i].grade1,&p[i].grade2,&p[i].grade3); p[i].grade=(p[i].grade1+p[i].grade2+p[i].grade3)/3; } if((fp=fopen("stu.dat","wb"))==NULL) { printf("\nCannot open the file\n"); } for(a=0;a<=i;a++) { fwrite(&p[i],sizeof(struct student),1,fp); } if((fp1=fopen("stu.dat","rb"))==NULL) { printf("\nCannot open the file\n"); } for(a=0;a<i;a++) { fread(&p[i],sizeof(struct student),1,fp1); printf("%d,%s,%d,%d,%d,%f\n",p[i].nember,p[i].name,p[i].grade1,p[i].grade2,p[i].grade3,p[i].grade); } fclose(fp1); }最后输出的是0和null
时间: 2024-04-07 16:32:41 浏览: 43
在使用VSCode编写C程序时,出现错误:cannot open source file “stdio.h”
这段代码中存在一些问题,导致最后的输出结果为0和null。其中一个问题是在结构体中定义的姓名变量为char类型,只能存储一个字符,而输入的是字符串,导致存储错误。应该将姓名变量定义为字符数组,例如:char name[20]。
另外,循环中写入文件的代码中,应该使用变量a作为循环变量,而不是i。因为i最后的值是o,而不是实际输入的学生数目。修改后的代码如下:
阅读全文