Сортировка строк файла в алфавитном порядке - C (СИ)

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

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

Совсем не разбираюсь в файлах(( Напишите пожалйуста, как можно провести сортировку строк файла в алфавитном порядке в Си???

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAXLINE 4096
#define IFNAME "in.txt"
#define OFNAME "out.txt"
 
int scmp(const void *p1, const void *p2)
{
    const char *s1, *s2;
 
    s1 = * (char **) p1;
    s2 = * (char **) p2;
    return strcmp(s1, s2);
}
 
int main(void)
{
    FILE *ifp, *ofp;
    char *lineptr[MAXLINE];
    char s[MAXLINE];
    int i, nl;
 
    ifp = fopen(IFNAME, "r");
    if(ifp == NULL || (ofp = fopen(OFNAME, "w")) == NULL) {
        perror("fopen");
        return -1;
    }
 
    for(i = 0; i < MAXLINE; ) {
        if(fgets(s, sizeof(s), ifp) == NULL)
            break;
        if(*s != '\n')
            lineptr[i++] = strdup(s);
    }
 
    nl = i;
    qsort(lineptr, nl, sizeof(char *), scmp);
 
    for(i = 0; i < nl; i++) {
        fprintf(ofp, "%s", lineptr[i]);
        free(lineptr[i]);
    }
    fclose(ifp);
    fclose(ofp);
    return 0;
}

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

  1. Включаются необходимые заголовочные файлы: stdio.h, stdlib.h, string.h
  2. Определяются константы: MAXLINE - максимальное количество символов в строке, IFNAME - имя файла для чтения, OFNAME - имя файла для записи
  3. Создается функция scmp для сортировки строк
  4. В функции main открывается файл для чтения и записи, создается массив для хранения строк и их количества
  5. В цикле считываются строки из файла, если текущая строка не пустая, она добавляется в массив
  6. Массив строк сортируется с помощью функции qsort и сравнивается на основе функции scmp
  7. Строки записываются в отсортированном порядке в файл для записи
  8. Файлы закрываются, возвращается 0 для успешного выполнения программы

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


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

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

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