Сортировка строк файла по алфавиту - C (СИ)

Узнай цену своей работы

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

Здравствуйте. Необходимо отсортировать считать строки из файла, отсортировать их по алфавиту с помощью шейкер-сортировки, и вывести на экран. Вот что я смог написать, проблема именно в том, что я не могу понять как сортировать строки.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
    char s[10][20];
    char *p[10];
    
    FILE *f;
    int i=1;
    int k=1;
    int m,N;
    
     char *buf;
    f = fopen ("input.txt", "r");
    
    while (!feof(f))
    {
    fscanf (f, "%s", s);
    i++;
    *p[i]=s[i][0];
    }

    fclose (f);

    do {
    N = 0;
    for(m=10; m > 0; --m) {
      if(strcmp(p[m-1],p[m])>0) {
        
          buf = p[m];
            p[m-1] = p[m];
            p[m] = buf;
       
        N = 1;
      }
    }
 
    for(m=1; m < 10; ++m) {
      if (strcmp(p[m-1],p[m])>0) {
     buf = p[m-1];
        p[m-1] = p[m];
        p[m] = buf;
        N = 1;
      }
    }
  } while(N);
    
    for (k=0; k<i; k++)
    {
    printf ("\t\t  %s \n", p[k]);
    }

}

Решение задачи: «Сортировка строк файла по алфавиту»

textual
Листинг программы
char strings[10][32], str[32];
FILE *f;
int count = 0;
if((f = fopen ("input.txt", "r") == NULL){
  return 1;
}
while (feof(f) == 0 || count > 10)
{
  fscanf (f, "%s", str);
  strcpy(strings[count++], str);
}
fclose (f);

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

  1. Объявляются массив строк и буферная строка
  2. Открывается файл для чтения
  3. Проверяется успешность открытия файла
  4. Если файл не открылся, то возвращается 1
  5. Запускается цикл, который будет выполняться пока не достигнется конец файла или не будет прочитано более 10 строк
  6. В каждой итерации цикла считывается строка из файла и сохраняется в буферной строке
  7. Считанная строка копируется в соответствующую ячейку массива строк
  8. Увеличивается счетчик количества прочитанных строк
  9. Закрывается файл
  10. Возвращается 0, что означает успешное выполнение программы

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


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

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

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