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