На чистом С без WinAPI
Код:

#include <stdio.h>
int main()
{
FILE *in;
char* d="try.c";
if((in = fopen(d,"rt"))==NULL)
{
fprintf(stderr, "Не могу открыть файл \n");
}
while(!feof(in)){
fputc(fgetc(in), stdout);
}
fclose(in);
return(0);
}
Текст на каком языке и в какой кодировке?
Если текст на латинице, то буквы можно непосредственно сравнивать. ('a'>'b')
Если русский, то нужно сопоставить каждой букве числовой код.
Представить каждое слово в виде массива чисел. По порядку сравнивать элементы массива между собой пока точно не станет ясно, что начальные цифры одного меньше другого. и записывать в нужном порядке в новый массив.
Затем вернуть из чисел обратно в символьный вид. Как записывать в файл или читать из файла см. выше
Вместо new в чистом С используется функция malloc.
Код:

#include<stdio.h>
#include<string.h>
#include<alloc.h>
#include<process.h>
int main(void)
{
char *str;
/* выделить память под строку */
if((str = malloc(10)) == NULL)
{
printf("Недостаточно памяти\n");
exit(1); /* завершение с кодом ошибки */
}
/* скопировать в строку "Hello" */
strcpy(str,"Hello");
/* вывести строку */
printf("Строка: %s\n",str);
/* освободить память */
free(str);
return 0;
}