Заполнить динамический массив из стандартного потока ввода - C (СИ)

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

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

Тяжкий случай с динамическими массивами. И думаю не у меня одного. Вот пример заполнения массива данными:
char *mess[50];
 
printf("Enter login:\n");
scanf("%s\n", login);
strcpy(mess[0], (char*) &login);
printf("%s\n", mess[0]);
Выпадает ошибка сегментирования. Не пойму где ошибка и как грамотно заполнять динамический массив из стандартного потока ввода??

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

textual
Листинг программы
char mas[10][80]; // 10 строк по 79 символов (+ завершающий 0)
strcpy(mes[0], "xxx");
// а лучше - так:
strncpy(mess[0], "xxx", 79); // Копировать не более 79 символов

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

  1. Объявляется динамический массив mas размером 10 строк по 79 символов (80 включает в себя \0 для завершающего символа)
  2. С помощью функции strcpy или strncpy (вариант с strncpy лучше, т.к. она копирует только определенное количество символов) заполняется первая строка массива строкой xxx.
  3. Остальные строки массива остаются пустыми.
  4. В данном коде не обрабатываются ошибки, поэтому предполагается, что ввод всегда корректен и не превышает 79 символов.
  5. Код не содержит операций над другими переменными, кроме mas и mess, которые объявлены и заполнены в этом же блоке кода.

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


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

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

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