Используя malloc и realloc создать двумерный динамический массив - C (СИ)
Формулировка задачи:
Используя malloc и realloc, помогите написать часть кода для ввода массива строк,количество строк и символов в строках неизвестно.
Решение задачи: «Используя malloc и realloc создать двумерный динамический массив»
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"); }
Объяснение кода листинга программы
- Объявлены переменные: i, s, k, j, m, n, r, z, size_x, size_y, stroka, razd, q.
- Пользователю предлагается ввести количество разделителей.
- Выделена память под одномерный массив razd.
- Введенные символы сохраняются в массиве razd.
- Выводится сообщение и символы, введенные пользователем в качестве разделителей.
- Выделена память под двумерный массив stroka.
- Введенные строки сохраняются в массиве stroka.
- Проверка на разделители.
- Реализованы операции вставки и удаления элементов массива.
- Выделенная память освобождается.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д