Как я могу прочитать данные из файла .txt в C? - PullRequest
0 голосов
/ 08 мая 2019

Я хочу прочитать информацию, которую я сохранил в текстовом файле в созданной мной программе. но когда я хочу выполнить процесс чтения, читая, например, только первую строку информации об ученике, ученики 10 класса пишут одну и ту же информацию об ученике 10 раз в рамках программы. Я делаю операцию чтения в цикле for.

struct student{

char Name[30];
char Surname[30];
int StudentNumber;
int MathematicScore;
int EnglishScore;
int HistoryScore;
int BiologyScore;
int LiteratureScore;
int PhysicsScore;
int classNum;
int total;
float average;

};

/ * Процесс печати * /

FILE *fout;
fout = fopen("Mathematic Class.txt","w"); 

printf("Please enter student number of class : ");
scanf("%d", &x.classNum);

fprintf(fout, "Class Number : %d\n",x.classNum);

for(i=0; i<x.classNum; i++){

    printf("Please Enter %d.Student Name : ",i+1);
    scanf("%s",&x.Name);

    printf("Please Enter %d.Student Surname : ",i+1);
    scanf("%s",&x.Surname);

    printf("Please Enter %d.Student Number : ",i+1);
    scanf("%d",&x.StudentNumber);

    printf("Please Enter %d.Student Score : ",i+1);
    scanf("%d",&x.MathematicScore);

    x.total = x.total + x.MathematicScore;

    fprintf(fout, "\nStudent Name : %s %s Student Number : %d Student Score : %d\n", x.Name, x.Surname, x.StudentNumber, x.MathematicScore);
}   

x.average = x.total / x.classNum;

fprintf(fout, "\n\nClass Average is : %f", x.average);

fclose(fout);



/* Reading process */



        FILE *fin;
    fin = fopen("Mathematic Class.txt","r");


    fscanf(fin, "Class Number : %d\n\n%s %s %d %d\n",&x.classNum, &x.Name, &x.Surname, &x.StudentNumber, &x.MathematicScore, &x.average);
    fclose(fin);            


    printf("Class Number : %d\n", x.classNum);

    for(i=0; i<x.classNum; i++){

        printf("Student Name : %s %s Student Number : %d Student Score : %d\n", x.Name, x.Surname, x.StudentNumber, x.MathematicScore); 

    }

    printf("\n\nClass Average is : %f", x.average);

1 Ответ

0 голосов
/ 08 мая 2019

Вот проблемы, которые я вижу при первом взгляде:

  1. Вы вызываете fscanf () только один раз в процессе чтения. Если вы хотите прочитать данные по нескольким учащимся, как, по-видимому, вы делаете в процессе написания, вам нужно вызвать их один раз, чтобы каждый ученик прочитал строку этого учащегося из файла.

  2. В процессе чтения / печати вы печатаете одни и те же данные x.classNum times.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...