Запись в связный список из файла - C (СИ)
Формулировка задачи:
Описание списков:
Функция чтения файла:
Функция вызова:
При выборе данной функци программы возникает следующая ошибка:
Некоторые люди пишут, что такая ошибка происходит часто ввиду разыменовывания недоступного указателя, но, видимо к этой проблеме моя проблема отношения не имеет.
Мне кажется, что слабое место находится здесь:
При запуске printf в цикле, при count_names = 4 count доходит до 2, после чего возникает ошибка. Список, который я перед этим передал в файл, содержит три узла.
typedef struct name { char first_name[MAX_NAME]; char last_name[MAX_NAME]; int score; struct name *next; struct name *prev; } Name; typedef struct DblLinkedList { size_t size; Name *head; Name *tail; } DblLinkedList;
Name * load_from_file(Name * node, DblLinkedList *list, const size_t *count_names, char * filename) { FILE *fp = NULL; node = list->head; size_t count; if ((fp = fopen(filename, "rb")) == NULL) { printf("\nCan't open the file\n"); exit(EXIT_FAILURE); } for (count = 0; count < *count_names; ++count) { fread(node, sizeof(Name), 1, fp); node = node->next; } if(fclose(fp) != 0) { printf("\nCan't close the file in a correct way\n"); exit(EXIT_FAILURE); } return node; } }
case '2': { names = load_from_file(names, linked_names, &count_names, filename); Printstruct(linked_names, linked_names->size); main_menu(); break; }
” terminated by signal SIGSEGV (Address boundary error)
for (count = 0; count < *count_names; ++count) { fread(node, sizeof(Name), 1, fp); node = node->next; }
Решение задачи: «Запись в связный список из файла»
textual
Листинг программы
node = node->next;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д