Заполнение односвязного списка из файла - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день! Подскажите как заполнить содносвязный список из файла. Не совсем понимаю сам принцип действия. По мере считывания каждого символа в файле пытаюсь создать узел списка,копируя в список данные символы(ругается по поводу strcpy), затем пытаюсь присоединить заполненный узел к списку. Подскажите, пожалуйстаб правильный алгоритм. Файл содержит следующее: a 1 b 2 c 3 Далее собственно код: #include #include #include struct node { char name[20]; int age; struct node* NEXT; }; FILE* file1; void push(struct node** top, char name, int age); void displayList(struct node* top); void main() { struct node* newNode; struct node* top = NULL; char name[20]; int age; int numInputs; file1 = fopen("test.txt", "r"); if (file1 == NULL) { printf("The file could not be opened\n"); } else { printf("Reading the contents of Sample.txt\n"); while (!feof(file1)) { numInputs = fscanf(file1, "%s %d", name, &age); if (numInputs > 0) { printf("%s %d\n", name, age); } push(&top, name, age); } fclose(file1); } displayList(top); getch(); } void push(struct node** top, char name, int age) { if (top == NULL) { struct node* newNode; newNode = (struct node*)malloc(sizeof(struct node)); strcpy(newNode->name, name); newNode->age = age; newNode->NEXT = *top; *top = newNode; } else { struct node* curr; struct node* newNode; newNode = (struct node*)malloc(sizeof(struct node)); strcpy(newNode->name, name); newNode->age = age; curr = top; while (curr->NEXT != NULL) { curr = curr->NEXT; } curr->NEXT = newNode; newNode->NEXT = NULL; } } void displayList(struct node* top) { struct node* curr; curr = top; while (curr != NULL) { printf("The name is %s age is %d\n", curr->name, curr->age); curr = curr->NEXT; } }

Решение задачи: «Заполнение односвязного списка из файла»

textual
Листинг программы
void push(struct node** top, char* name, int age)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы