Заполнить динамический массив из стандартного потока ввода - 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, которые объявлены и заполнены в этом же блоке кода.