Код считывает массив структур из файла. Но в функции main, почему то выводит мусор. Как это можно исправить? (В файле данные расположены так: "Солнечный,Самара,Москва,пеший,4,29"):
#include <stdio.h>
#include <stdlib.h>
#include <locale>
#include <conio.h>
struct Routes
{
char title[32];
char start[32];
char finish[32];
char type[32];
int complexity;
int duration;
}; // 6 записей
int size = 0;
Routes* arr = (Routes*)malloc(size * sizeof(Routes));
// Загрузить данные из файла
void get_datas(Routes *arr, int* size)
{
FILE* file;
file = fopen("datas.txt", "r");
if (file == NULL) { printf("Ошибка открытия файла"); return; }
int count = *size;
int record = *size;
int read; // Кол-во записей
do
{
count++;
arr = (Routes*)realloc(arr, count * sizeof(Routes));
read = fscanf(file, "%32[^,],%32[^,],%32[^,],%32[^,],%d,%d\n",
arr[record].title,
arr[record].start,
arr[record].finish,
arr[record].type,
&arr[record].complexity,
&arr[record].duration
);
if (read == 6) record++;
if (read != 6 && !feof(file)) return; // Неправильный формат файла
if (ferror(file)) return; // Если произойдет ошибка
} while (!feof(file));
fclose(file);
*size = count;
}
int main()
{
setlocale(LC_ALL, "ru");
printf("%d\n", size);
get_datas(arr, &size);
printf("%d\n", size);
for (int i = 0; i < size; i++)
{
printf("%s %s %s %s %d %d", arr[i].title,
arr[i].start,
arr[i].finish,
arr[i].type,
arr[i].complexity,
arr[i].duration);
}
free(arr);
}