Заполнить массив словами вводом с консоли - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задача тривиальна - заполнить массив словами вводом из консоли. Как я понимаю такой способ не проканает. Заранее спасибо
char *mmm[4];
 
int i;
puts("Vvedite slova \n");
for (i=1; i<5; i++)
{
scanf("%s",mmm);
}
Укажите, где основная ошибка (не пинайте сильно, начал учить Си после Delphi) и по возможности напишите корректный код Заранее спасибо!

Решение задачи: «Заполнить массив словами вводом с консоли»

textual
Листинг программы
#define MAXLEN 256
...
char *mmm[4];
int i;
 
puts("Vvedite slova \n");
for (i=1; i<4; i++)
{
    mmm[i] = malloc(MAXLEN);
    scanf("%s", mmm[i]);
}
...
for (i=1; i<4; i++)
    free(mmm[i]);

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

В этом коде:

  1. #define MAXLEN 256 - это определение максимальной длины строки, которую можно сохранить в массиве.
  2. *char mmm[4];* - это создание массива из 4 элементов, каждый из которых является указателем на строку (char).
  3. int i; - это создание переменной для итерации по элементам массива.
  4. puts(Vvedite slova \n); - это вывод сообщения с приглашением ввести слова.
  5. for (i=1; i<4; i++) - это цикл, который выполняется 3 раза (для элементов mmm[1], mmm[2], mmm[3]).
  6. mmm[i] = malloc(MAXLEN); - это выделение памяти под строку (максимальной длины) для каждого элемента массива.
  7. scanf(%s, mmm[i]); - это ввод строки с помощью функции scanf для каждого элемента массива.
  8. for (i=1; i<4; i++) - это цикл, который выполняется 3 раза (для элементов mmm[1], mmm[2], mmm[3]).
  9. free(mmm[i]); - это освобождение памяти, выделенной под каждый элемент массива. Следует отметить, что ввод с клавиатуры в этом коде не проверяется на ошибки, и если пользователь введет что-то, что не является строкой (например, число или символ), программа может аварийно завершиться.

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


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

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

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