Как создавать динамический массив строк - C (СИ)
Формулировка задачи:
Здравствуйте. Помогите, пожалуйста, разобраться, как создавать динамический массив строк. Количество строк неизвестно, строки имеют ограничение по длине MAXLEN
Решение задачи: «Как создавать динамический массив строк»
textual
Листинг программы
char **pc;
int nstrok,mstolb,i;
scanf("%d",&nstrok);
pc=(char**)malloc(nstrok*sizeof(char*));
for(i=0;i<nstrok;i++)
{
scanf("%d",&mstolb);
pc[i]=(char*)malloc(mstolb*sizeof(char));
}
Объяснение кода листинга программы
В данном коде происходит создание динамического массива строк.
- Объявляются три переменные:
pcтипаchar **(указатель на указатель на символ), который будет хранить адреса элементов массива строк;nstrokтипаint(целое число), которая будет хранить количество строк в массиве;mstolbтипаint(целое число), которая будет хранить количество символов в каждой строке.
- С помощью функции
scanfв переменнуюnstrokсчитывается количество строк, которые необходимо создать. - С помощью функции
mallocвыделяется память под массив указателей на строки. В данном случае, мы выделяем память подnstrokуказателей типаchar *. - В цикле
forс помощью функцииscanfв переменнуюmstolbсчитывается количество символов в каждой строке. - Внутри цикла
forдля каждого значенияmstolbвыделяется память под строку символов с помощью функцииmalloc. Полученный указатель на строку символов сохраняется в соответствующем элементе массиваpc. - Код завершается, и управление передается следующей инструкции в программе.