#include <stdio.h>
struct student
{
int ID;
char name[10];
int grade[3];
};
int getinputfromfile(char *filename,struct student *s,int maxnum)
{
FILE* fp=fopen(filename,"r");
if(fp==NULL){
printf("error");
return 0;
}
int i,j,k;
for(i=0;i<maxnum;i++){
if(feof(fp)){
return i;
}
fscanf(fp,"%d",&(s + i)->ID);
fscanf(fp,"%s",s[i].name);
for(k=0;k<3;k++){
fscanf(fp,"%d",&s[i].grade[k]);
}
}
return maxnum;
}
int main()
{
int n,maxnum;
printf("请输入最大学生数:");
scanf("%d",&maxnum);
struct student *s;
n=getinputfromfile("test.txt",s,maxnum);
printf("学生数为:");
printf("%d",n);
}
调试到fscanf(fp,"%d",&(s + i)->ID);时开始出错
txt文件中的数据是
1
zz
22
22
33
2
ss
44
55
66
3
ee
77
8
8
struct student *s; 定义s时没有初始化内存。
#include <stdio.h>
struct student
{
int ID;
char name[10];
int grade[3];
};
int getinputfromfile(char* filename, struct student* s, int maxnum)
{
FILE* fp = fopen(filename, "r");
if (fp == NULL) {
printf("error");
return 0;
}
int i, j, k;
for (i = 0; i < maxnum; i++) {
if (feof(fp)) {
return i;
}
fscanf(fp, "%d", &(s + i)->ID);
fscanf(fp, "%s", s[i].name);
for (k = 0; k < 3; k++) {
fscanf(fp, "%d", &s[i].grade[k]);
}
}
return maxnum;
}
int main()
{
int n, maxnum;
printf("请输入最大学生数:");
scanf("%d", &maxnum);
struct student* s = new student;;
n = getinputfromfile("test.txt", s, maxnum);
printf("学生数为:");
printf("%d", n);
}