Code:
#include <stdio.h>#include <string.h>
#include <stdlib.h>
struct lesson {
char name[50];
int grade;
};
struct student {
char name[30];
char surname[30];
int AM;
int year;
int lessons_num;
struct lesson *lessons;
};
void print_data_base(struct student Students[],int n);
int main () {
FILE *f;
int n,m,i,j;
char buff[100]="";
struct student *Students;
f=fopen("in.txt","r");
if (f==NULL) {printf("error reading file!!");exit(1);}
fscanf(f,"%d",&n);
Students = (struct student*)malloc(n*sizeof(struct student));
for (i=0;i<n;i++) {
fscanf(f,"%s",Students[i].name);
fscanf(f,"%s",Students[i].surname);
fscanf(f,"%d",&Students[i].AM);
fscanf(f,"%d",&Students[i].year);
printf("%d ",Students[i].AM);
printf("%s ",Students[i].name);
printf("%s ",Students[i].surname);
printf("%d ",Students[i].year);
fscanf(f,"%d",&Students[i].lessons_num);//Πλήθος μαθημάτων
printf("lessons_num=%d\n",Students[i].lessons_num);
Students[i].lessons = (struct lesson*)malloc(Students[i].lessons_num * sizeof(struct lesson));
int lessons_count;
for(lessons_count=0; lessons_count<Students[i].lessons_num; lessons_count++){
//fscanf(f, "%[^\n]s",Students[i].lessons[lessons_count].name);
fgets(buff,100,f);
printf("buff=%s\n",buff);
strcpy(Students[i].lessons[lessons_count].name, buff);
//fscanf(f, "%s" , Students[i].lessons[lessons_count].name);
fscanf(f,"%d",&Students[i].lessons[lessons_count].grade);
printf("%d. lesson: %s ",lessons_count,Students[i].lessons[lessons_count].name);
printf("grade: %d\n",Students[i].lessons[lessons_count].grade);
}
getchar();
}
fclose(f);
printf("print data base function...\n");getchar();
//print_data_base(Students, n);
return 0;
}
void print_data_base(struct student Students[],int n){
int i,j;
for (i=0;i<n;i++) {
printf("%d ",Students[i].AM);
printf("%s ",Students[i].name);
printf("%s ",Students[i].surname);
printf("%d ",Students[i].year);
printf("\n");
for(j=0; j<Students[i].lessons_num; j++){
printf("%s ",Students[i].lessons[j].name);
printf("%d\n",Students[i].lessons[j].grade);
}
}
printf("\n");
}//end print_data_base
and the attached text file as input file.