Запись действительных чисел из файла в линейный однонаправленный список - C (СИ)
Формулировка задачи:
Решение задачи: «Запись действительных чисел из файла в линейный однонаправленный список»
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> struct TList { int value; struct TList* next; }; //----------------------------------------------// struct TList* Push(struct TList** list, int value) { struct TList* node = (struct TList*) malloc(sizeof(struct TList)); node->value = value; node->next = *list; *list = node; return *list; } //----------------------------------------------// void Print(struct TList* list) { while (list) { fprintf(stdout, "%d ", list->value); list = list->next; } } //----------------------------------------------// bool Load(const char* fname, struct TList** list) { FILE* f = fopen(fname, "r"); if (f == NULL) { return false; } int value = 0; while (feof(f) == false) { if (fscanf(f, "%d", &value) == 1) { Push(list, value); } } fclose(f); return true; } //----------------------------------------------// int main(int argc, const char* argv[]) { if (argc != 2) { fprintf(stderr, "Usage: program <FILE>\n"); return EXIT_FAILURE; } struct TList* list = NULL; if (Load(argv[1], &list) == false) { fprintf(stderr, "Error: file '%s' not load ...\n", argv[1]); return EXIT_FAILURE; } Print(list); return EXIT_SUCCESS; }
Объяснение кода листинга программы
В этом коде определен тип структуры TList
, который представляет собой односвязный список, содержащий целочисленные значения. Затем определены две функции: Push и Print. Push добавляет новый узел в начало списка, а Print выводит значения всех узлов в консоль.
Функция Load считывает файл построчно и добавляет каждое целочисленное значение в список, используя функцию Push. Функция возвращает true, если файл успешно прочитан и список успешно заполнен, и false в случае ошибки при открытии файла или чтении из него.
В функции main создается пустой список и передается в функцию Load. Если файл успешно прочитан и список успешно заполнен, выводится список с помощью функции Print. В противном случае выводится сообщение об ошибке и программа завершается с кодом EXIT_FAILURE.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д