Создать бесконечный двумерный массив с помощью malloc realloc - C (СИ)
Формулировка задачи:
Требуется создать бесконечный двумерный массив. С помощью malloc realloc. Идея такая: создаётся с помощью malloc массив из одного эл-та и в цикле while с помощью realloc создаётся по одному вводимому эл-ту бесконечный двумерный динамический массив.
Почему не работает? Как создать с помощью malloc массив из одного эл-та?
//
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <malloc.h>
int _tmain()
{
setlocale(LC_CTYPE,"");
// указатель на двумерный массив
char kombin[20]; // массив символьной комбинации
char glasn[6]={'a','e','u','i','o','y'}; // массив гласных (6)
int k=0, g=0, X, m=0, i=0, j=0, len,L,L1; // size_x размер строки, size_y размер столбца,size_z размер комбинации,
// X - допустимое число гласных,( m=0; g=0,) счетчики совпадений комб и глас, k=0 - текущий индекс комбинации
printf("Назовите допустимое кол-во гласных букв ");
printf(" » ");
scanf_s("%d",&X);
for(k=0; k<=20; k++)
{ printf("vvedite kombin");
scanf_s("%s", & kombin[k]);
}
len=strlen(kombin);
// как объявить динамический массив?
char p[][]=(char)malloc(sizeof(char)); // создаем единичный массив
while(1)
{
scanf_s("%d",& p);
if(p[i][j]==' ') // вводим первую строчку до пробела
{
i++;j=0;
p[i][j]=(char)realloc(p,sizeof(char));
continue;
}
for(int l=0; l<6; l++) // сначала проверка на гласные
{
if(glasn[l] == p[i][j])
{ g++; }
if(g >= X) // если количество совпадений с гласной > допустимого значения , то выходим из матрицы
{
L1=i; L=j;
system("pause");
return 0;
}
}
if(p[i][j] == kombin[k]) // проверка на совпадения
{ k++; } // если есть совпадение увеличиваем счетчик / индекс комбинации
else
{ k=0;} // если есть хоть одно последовательное несовпадение обнуляем счетчик
if(k == len) // если количество последовательных совпадений = длине комбинации, то переход на след.строку
{
i++; j=0;
p[i][j]=(char)realloc(p,sizeof(char));
continue;
}
p[i][j++]=(char)realloc(p,sizeof(char));
}
for(int i=0; i<L1; i++) // вывод строки на экран
{
for(int j=0; j<L; j++)
{
printf("%s", p[i][j]);
}
}
system("pause");
return 0;
}Решение задачи: «Создать бесконечный двумерный массив с помощью malloc realloc»
textual
Листинг программы
p[i][j] = (char) realloc(p, sizeof(char));