Выполнить сортировку массива строк - 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 - длина строки.
- Выделение памяти под массив указателей на строки.
- В цикле выделяем память под каждую строку в массиве строк.
- Считываем строки с клавиатуры и сохраняем их в массиве.
- Выводим полученный массив на экран.
- Освобождаем память, выделенную под каждую строку в массиве строк.
- Освобождаем память, выделенную под массив указателей на строки.
- Ожидание нажатия клавиши для завершения работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д