Не выводит символы
Написал программу, которая увеличивает размер массива структур и вводит в него новые данные. Программа принимает введённые с клавиатуры значения параметров интернет-тарифа, после чего выводит на экран список тарифов с введённым новым тарифом. Однако вместо значений нового тарифа выводится какая-то абракадабра, видимо адреса ячеек памяти. Как сделать так, чтобы введённые значения выводились правильно?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
struct LIST
{
char name[20];
double cost;
double speed;
double traffic_volume;
char time[20];
};
void list_init(struct LIST* list);
void print(struct LIST* list, int list_size);
void second_act(int* list_size, struct LIST* list);
int main()
{
setlocale(LC_ALL, "Russian");
system("chcp 1251");
struct LIST* list = (struct LIST*)malloc(4 * sizeof(struct LIST));
int list_size = 4, position;
list_init(list);
second_act(&list_size, list);
print(list, list_size);
return 0;
}
void list_init(struct LIST* list)
{
strcpy_s(list[0].name, 20, "Light");
list[0].cost = 30;
list[0].speed = 2;
list[0].traffic_volume = 700;
strcpy_s(list[0].time, 20, "Неограничено");
strcpy_s(list[1].name, 20, "Fat");
list[1].cost = 38;
list[1].speed = 1.5;
list[1].traffic_volume = 1500;
strcpy_s(list[1].time, 20, "Неограничено");
strcpy_s(list[2].name, 20, "Fast");
list[2].cost = 45;
list[2].speed = 5;
list[2].traffic_volume = 700;
strcpy_s(list[2].time, 20, "Неограничено");
strcpy_s(list[3].name, 20, "Ultra");
list[3].cost = 80;
list[3].speed = 10;
list[3].traffic_volume = 1000;
strcpy_s(list[3].time, 20, "Неограничено");
}
void print(struct LIST* list, int list_size)
{
printf(" Название тарифа\tЦена(Рубли)\tСкорость(Мбит/с)\tОбъём трафика(Гб)\t Время доступа\n");
for (int i = 0; i < list_size; i++)
{
printf("%20s\t%11.f\t%16.f\t%17.f\t%20s\n", list[i].name, list[i].cost, list[i].speed, list[i].traffic_volume, list[i].time);
}
printf("\n\n");
}
void second_act(int* list_size, struct LIST* list)
{
(*list_size)++;
list = (struct LIST*)realloc(list, (*list_size) * sizeof(struct LIST));
puts("Название тарифа:");
scanf_s("%s", &list[*list_size].name, 20);
puts("Цена в рублях:");
scanf_s("%f", &list[*list_size].cost);
puts("Скорость в Мбит/с:");
scanf_s("%f", &list[*list_size].speed);
puts("Объём трафика:");
scanf_s("%f", &list[*list_size].traffic_volume);
puts("Время доступа:");
scanf_s("%s", &list[*list_size].time, 20);
}