Заполнить динамический массив из стандартного потока ввода - 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 символов
Объяснение кода листинга программы
- Объявляется динамический массив
mas
размером 10 строк по 79 символов (80
включает в себя\0
для завершающего символа) - С помощью функции
strcpy
илиstrncpy
(вариант сstrncpy
лучше, т.к. она копирует только определенное количество символов) заполняется первая строка массива строкойxxx
. - Остальные строки массива остаются пустыми.
- В данном коде не обрабатываются ошибки, поэтому предполагается, что ввод всегда корректен и не превышает 79 символов.
- Код не содержит операций над другими переменными, кроме
mas
иmess
, которые объявлены и заполнены в этом же блоке кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д