Выполнить сортировку массива строк - C (СИ)
Формулировка задачи:
Доброго времени суток
Поставили предо мной такую задачу
"В ходе выполнения лабораторной работы потребуется выполнить сортировку массива строк. Для ускорения этой операции обычно используется дополнительный массив указателей. В этом случае вместо перестановки двух строк с помощью функции strcpy() используется перестановка указателей обычным присваиванием."
в связи с этим встал вопрос о создании динамического массива строк с (на чистом си) с помощью функций malloc() и free()/
Как это сделать?
Число строк заранее не известно может быть 1 2 3 или 20
длинна этих строг так же под вопросом одна строка может быть длиной 1 символ и следующая 100
в общем как захочется проверяющему
Я так понимаю нужен двумерный символьный динамический массив но затрудняюсь как сделать чтобы строки и количество элементов в них расширялось в процессе работы программы
пишу это но не компилируется ругается на указатель
очень нужна помощь так как сам додуматься не могу((
int main () { int i,j; char **p [i][j]; p = (char (**)[10]) malloc(100*sizeof(int)); getch(); return 0; }
Решение задачи: «Выполнить сортировку массива строк»
textual
Листинг программы
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <locale.h> int main(void) { setlocale (LC_ALL, "RUS"); int strok=3; //Количество строк в массиве int len=255; //Длина строки char **Massiv = (char**)malloc(strok * sizeof(char*)); for (int i=0;i<strok;i++) Massiv[i] = (char*)malloc(len * sizeof(char*)); //Выделяем память под количество символов в строке для каждой строки в отдельности printf("Вводимое количество строк = %d \n",strok); for (int i=0;i<strok;i++) scanf("%s",Massiv[i]); //Считываем строки с клавиатуры в массив printf("\n\\ПОЛУЧЕННЫЙ МАССИВ\n"); for (int i=0;i<strok;i++) printf("%s \n",Massiv[i]); //Выводим массив на экран for (int i=0;i<strok;i++) free(Massiv[i]); //Освобождаем память free(Massiv); system("PAUSE"); }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с памятью и вводом/выводом данных.
- Установка локали на русский язык.
- Объявление переменных:
- strok - количество строк в массиве;
- len - длина строки.
- Выделение памяти под массив указателей на строки.
- В цикле выделяем память под каждую строку в массиве строк.
- Считываем строки с клавиатуры и сохраняем их в массиве.
- Выводим полученный массив на экран.
- Освобождаем память, выделенную под каждую строку в массиве строк.
- Освобождаем память, выделенную под массив указателей на строки.
- Ожидание нажатия клавиши для завершения работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д