Заполнение нового списка из файла


Нужно из файла (блокнота) заполнить односвязный список

моя структура:

struct prog {
char name[80];
unsigned int kol;
double time1;
double time2;

struct prog* next;
};

вот как я попытался сделать но ничего не вышло:

void zad8(prog* head) {

FILE* g;
prog* p = head;
fopen_s(&g, "fileG.txt", "r");
while (!feof(g)) {
    fscanf(g, "%-18s", p->name);
    fscanf(g, "%-22u",  &p->kol);
    fscanf(g, "%-32.2lf",  &p->time1);
    fscanf(g, "%-28.2lf", &p->time2);
    fscanf(g, "\n");
    p = p->next;
}
fclose(g);
}

вот как выглядит содержимое блокнота: https://i.stack.imgur.com/6fPMq.png


0

По крайней мере анализ EOF надо делать после чтения. Поэтому лучше читать всю строку одним fscanf (кстати fscanf возвращает количество успешно прочитанных элементов формата) и читать \n им не надо. Если требуется уверенность (проверка формата исходного файла), что запись целиком находится в одной строке, то читайте по строкам (например, getline), а потом sscanf-ом из строки

0

А если файл не из блокнота?

задан
4 дня 14 часов назад
просмотрен
12