Отсортировать содержимое файла по алфавиту - C (СИ)

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

Дали лабу,писать можно только на C. С ним не особо знаком. Вопрос такой. После чтения всех символов из файла, мне нужно отсортировать полученное по алфавиту. Пробую обычным пузырьком, но после него у меня компиль(Visual Studio 2017) ругается на free(text). Немного не понимаю, как я порчу кучу. Может я торможу, подскажите пожалуйста.
//19. Задан текстовый файл F1, состоящий из произвольной последовательности буквенных символов. Упорядочить символы в алфавитном порядке, при этом все повторяющиеся символы должны быть удалены, и переписать новый текст в файл F2.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <Windows.h>
#include <malloc.h>
 
void bubble(char *i, int n);
 
void main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    char *text = NULL;
    int size = 0;
    FILE *f;
    f = fopen("F:\Input.txt", "r");
 
    if (f != NULL)
    {
        fseek(f, 0, SEEK_END);
        size = ftell(f);
        fseek(f, 0, SEEK_SET);
 
        text = (char*)malloc(size * sizeof(char));
        fread(text, size, 1, f);
    }
    fclose(f);
 
    bubble(text, strlen(text));
    printf("%s", text);
 
    f = fopen("F:\Output.txt", "w");
    fwrite(text, 1, size, f);
 
    free(text);
    fclose(f);
    _getch();
}
 
void bubble(char *i, int n)
{
    int a, b;
    char t;
 
    for (a = 0; a < n; a++)
        for (b = n - 1; b >= a; b--)
        {
            if (i[b - 1] > i[b])
            {
                t = i[b - 1];
                i[b - 1] = i[b];
                i[b] = t;
            }
        }
 
}


textual

Код к задаче: «Отсортировать содержимое файла по алфавиту - C (СИ)»

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
 
void bubble(char *i, int n);
 
int main(void)
{
    char *text = NULL;
    int size = 0;
    FILE *f;
    f = fopen("c:\\in.txt", "r");
    if (f != NULL)
    {
        fseek(f, 0, SEEK_END);
        size = ftell(f);
        fseek(f, 0, SEEK_SET);
        text = (char*)malloc(size * sizeof(char)+1);
        fread(text, size, 1, f);
    }
    text[size-1]='\0';
    fclose(f);
    bubble(text, strlen(text));
    printf("%s", text);
    f = fopen("c:\\out.txt", "w");
    fwrite(text, 1, size, f);
 
    free(text);
    fclose(f);
    _getch();
}
 
void bubble(char *i, int n)
{
    int a, b;
    char t;
 
    for (a = 0; a < n-1; a++)
        for (b = n - 2; b >= a; b--)
        {
            if (i[b] > i[b+1])
            {
                t = i[b];
                i[b] = i[b+1];
                i[b+1] = t;
            }
        }
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

6   голосов, оценка 4.000 из 5

Источник