Заполнение массива структур - при вводе более двух элементов возникает ошибка - 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);

Объяснение кода листинга программы

  1. В данном коде используется функция strcpy(), которая предназначена для копирования строки.
  2. masStr1 - это массив структур, в котором каждая структура содержит поле str.
  3. nStr1 - это переменная, которая, вероятно, используется для индексации массива masStr1.
  4. str - это строка, которую необходимо скопировать в поле str каждой структуры в массиве masStr1.
  5. Ошибка возникает, когда вводится более двух элементов, что может указывать на проблему с размером массива или его инициализацией.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы