Создать динамический массив строк, почему не работает? - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
void main (void) {
char **a;
int n, m, i,j;
printf("Vvedite kol-vo strok__");
scanf("%d", &n);
printf("Vvedite kol-vo stolbcov__");
scanf("%d", &m);
a=(char**) malloc(n*sizeof(char*));
for(i=0; i<n; i++){
a[i]=(char) malloc(m*sizeof(char));
for(j=0; j<m; j++){
printf("a[%d][%d]", i, j);
gets(a[i][j]);
}
}
printf("%c", a[1][3]);
for(i=0; i<n; i++){
free(a[i]);
}
free(a);
}Решение задачи: «Создать динамический массив строк, почему не работает?»
textual
Листинг программы
a[i]=(char) malloc(m*sizeof(char));
Объяснение кода листинга программы
- Объявляется динамический массив строк
aтипаchar - В каждой ячейке массива
aвыделяется память под строку, используя функциюmallocи размер строки в символахm - Каждой ячейке массива
aприсваивается адрес начала выделенной памяти