Используя malloc и realloc создать двумерный динамический массив - C (СИ)

Формулировка задачи:

Используя malloc и realloc, помогите написать часть кода для ввода массива строк,количество строк и символов в строках неизвестно.

Код к задаче: «Используя malloc и realloc создать двумерный динамический массив - C (СИ)»

textual
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
#include <conio.h>
using namespace std;
int main(void)
{
    setlocale(LC_ALL, "");
    int i = 1, s = 0, k = 1, j = 1, m = 1, n = 1, r, z = 0, size_x = 1, size_y = 1;
    char** stroka;
    char* razd;
    bool q = 0;
    cout << "Введите кол-во разделителей:";
    cin >> r;
    //Динамическое выделение памяти под одномерный массив
    razd = (char*)malloc(3*sizeof(char));
    for (z = 0; z < r; z++)
    {
        razd[z] = _getche();
    }
    //проверка на разделители
    printf("\nВаши разделители:");
    for (int z = 0; z<r; z++)
    {
        cout << "`" << razd[z] << "`";
    }
    //Динамическое выделение памяти под двумерный массив
    cout << "\nВвод строк:\n";
    stroka = (char**)malloc(size_y*sizeof(char*));
 
    for (i = 0; s != r; i++)
    {
        stroka[i] = (char*)malloc(size_x*sizeof(char));
        for (j = 0; s != r; j++)
        {
            stroka[i][j] = _getche();
            size_x++;
 
            if (stroka[i][j] == '\r')
                break;
            stroka[i] = (char*)realloc(stroka[i], size_x*sizeof(char));
        }
        if (q == 1)
            break;
        for (z = 0, j = 0; z < r && j != '\r' && s != r;)
        {
            if (stroka[i][j] == razd[z])                    //в этом месте,даже если символы одинаковы
            {                                                    //проверку не проходит и дальше else идет
                s++; z++; j = 0;
            }
            else j++;
            s++;
        }
        size_y++;
        cout << "\n";
 
        stroka = (char**)realloc(stroka, size_y*sizeof(char*));
 
 
    }
    cout << "\n";
    //for (i = 0; i<m; i++)
    //{
    //  free(stroka[i]);
    //}
    //free(stroka);
    system("pause");
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

6   голосов, оценка 3.667 из 5


СДЕЛАЙТЕ РЕПОСТ