Выполнить сортировку массива строк - 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");
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с памятью и вводом/выводом данных.
  2. Установка локали на русский язык.
  3. Объявление переменных:
    • strok - количество строк в массиве;
    • len - длина строки.
  4. Выделение памяти под массив указателей на строки.
  5. В цикле выделяем память под каждую строку в массиве строк.
  6. Считываем строки с клавиатуры и сохраняем их в массиве.
  7. Выводим полученный массив на экран.
  8. Освобождаем память, выделенную под каждую строку в массиве строк.
  9. Освобождаем память, выделенную под массив указателей на строки.
  10. Ожидание нажатия клавиши для завершения работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы