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

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

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

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

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

textual
Листинг программы
  1. char mas[10][80]; // 10 строк по 79 символов (+ завершающий 0)
  2. strcpy(mes[0], "xxx");
  3. // а лучше - так:
  4. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы