Необходимо, чтобы в структуре символьный массив был динамическим - C (СИ)
Формулировка задачи:
Здраствуйте! Помогите пожалуйста с преобразованием данной структуры. Необходимо, чтобы в структуре символьный массив name[255] был динамический. Возможно ли это сделать?
struct shop
{
char name[255];//название товара
float price;//цена
int num;//количество товара
int del;//удалена запись или нет(1 - нет, 0 - да)
};
struct shop st;Решение задачи: «Необходимо, чтобы в структуре символьный массив был динамическим»
textual
Листинг программы
struct shop
{
char* name;//название товара
float price;//цена
int num;//количество товара
int del;//удалена запись или нет(1 - нет, 0 - да)
};
char *temp;
struct shop st[100];
...
scanf("%s",temp);
st[i].name=(char*)malloc(strlen(temp)+1);
strcpy(st[i].name, temp);
Объяснение кода листинга программы
- В коде определена структура
shopс полями:nameтипа char*,priceтипа float,numтипа int иdelтипа int. - Далее определена переменная
tempтипа char*. - Затем определен массив структур
shopтипа st[100]. - После этого происходит чтение строки с помощью функции scanf в переменную
temp. - Далее с помощью функции malloc выделяется память под строку, которую затем копируют в поле
nameструктурыshopс индексомi. При этом переменнаяiдолжна быть предварительно инициализирована.