Заполнение массива структур - при вводе более двух элементов возникает ошибка - C (СИ)
Формулировка задачи:
Задача: создать массив структур и заполнить с клавиатуры (произвольной длины).
Подскажите пожалуйста, в чем ошибка. При вводе больше 2 строк (создание больше 2 элементов массива структур) - выдает ошибку. При вводе 1-2 строк, вместо введенных строк, заполняет строками "end".
struct StrAndN { char* str = (char*)malloc(sizeof(str)); }; int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL, ""); char* str = (char*)malloc(sizeof(str)); // объявление строки struct StrAndN* masStr1 = (StrAndN*)malloc(sizeof(*masStr1)); // объявление массива структур int nStr1 = 0; // счетчик // заполнение массива структур с клавиатуры puts("Заполнение массива структур: (end для завершения ввода)"); while (true) { scanf("%s", str); if (0 == strcmp(str, "end")) break; // выход из цикла, если введена строка end masStr1[nStr1].str = str; nStr1++; } // проверка заполненной структуры for (int i = 0; i < nStr1; i++) { puts(masStr1[i].str); } return 0; }
Решение задачи: «Заполнение массива структур - при вводе более двух элементов возникает ошибка»
textual
Листинг программы
strcpy(masStr1[nStr1].str, str);
Объяснение кода листинга программы
- В данном коде используется функция
strcpy()
, которая предназначена для копирования строки. masStr1
- это массив структур, в котором каждая структура содержит полеstr
.nStr1
- это переменная, которая, вероятно, используется для индексации массиваmasStr1
.str
- это строка, которую необходимо скопировать в полеstr
каждой структуры в массивеmasStr1
.- Ошибка возникает, когда вводится более двух элементов, что может указывать на проблему с размером массива или его инициализацией.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д