Обработка файла C / проблема структуры - PullRequest
1 голос
/ 26 февраля 2011

Как читать в текстовом файле, содержащем имена и оценки учеников, и вводить их в массив структур.

maximum allowable records are 7:
e.g. James 45
Mary 70
Rob 100

Ответы [ 3 ]

1 голос
/ 26 февраля 2011

Сначала определите структуру. Структура описывает, что такое запись ; какие данные он содержит. Здесь у вас есть имя студента и его или ее оценка.

Во-вторых, вам нужно подготовить массив для записи объектов структуры. Из описания проблемы вы уже знаете, что допускается не более 7 студентов, поэтому вы можете определить длину массива для этого числа.

Далее откройте текстовый файл.

Наконец, напишите цикл, который принимает в качестве входных данных из файла строку для имени учащегося и целое число (или число с плавающей запятой, если вы того пожелаете) для своей оценки. В цикле создайте структуру для каждой записи и вставьте структуру в массив.

И, конечно же, не забудьте закрыть файл, когда закончите.

Это все, что нужно сделать. Если у вас есть какие-либо синтаксические или логические вопросы, задавайте их в комментариях, и мы с радостью поможем.

0 голосов
/ 26 февраля 2011

Прочитайте справочную страницу для fopen: http://linux.die.net/man/3/fopen

Это должно дать вам место для начала.

Также может быть полезна справочная страница для fread и fgets.Существует множество способов чтения из файла, и выбранный вами путь будет зависеть от многих факторов, таких как структура файла и уровень безопасности, который вы хотите использовать в своем приложении.

0 голосов
/ 26 февраля 2011

нашел этот код достаточно похожим, чтобы он мог помочь вам сделать то, что вам нужно.

#include <stdio.h>
#include <string.h>

/* Sample data lines
5 0 Wednesday Sunny
6 2 Thursday Wet
*/

int main() {
/* Define a daydata structure */
        typedef struct {
                int n_adults; int n_kids;
                char day[10]; char weather[10];
                } daydata ;
        daydata record[30];
        FILE * filehandle;
        char lyne[121];

        char *item;
        int reccount = 0;
        int k;

        /* Here comes the actions! */
        /* open file */

        filehandle = fopen("newstuff.txt","r");

        /* Read file line by line */

        while (fgets(lyne,120,filehandle)) {
                printf("%s",lyne);

                item = strtok(lyne," ");
                record[reccount].n_adults = atoi(item);

                item = strtok(NULL," ");
                record[reccount].n_kids = atoi(item);

                item = strtok(NULL," ");
                strcpy(record[reccount].day,item);

                item = strtok(NULL,"\n");
                strcpy(record[reccount].weather,item);

                printf("%s\n",record[reccount].day);
                reccount++;
                }

        /* Close file */

        fclose(filehandle);

        /* Loop through and report on data */

        printf("Weather Record\n");
        for (k=0; k<reccount; k++) {
                printf("It is %s\n",record[k].weather);
                }

        }

http://www.wellho.net/resources/ex.php4?item=c209/lunches.c

Дайте крик с кодом, который вы пробовали, если выесть проблемы с его изменением в соответствии с вашими потребностями.

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