2011-12-28 3 views
1

Хотите знать, что метод будет наиболее подходящим, и может быть, если кто-то будет так добр, как начать такую ​​функцию:C - сортировка списка слов в текстовом файле

AWord 
DWord 
CWord 
BWord 

Чтобы закончить в новый текстовый файл как:

AWord 
BWord 
CWord 
DWord 

на данный момент, моя программа, читает каждое слово построчно fgets() и делает некоторые вещи к нему, заглавной первую букву и т.д. После того, как все это будет сделано, новый текст файл создается, text.out.

Я хотел бы отсортировать его по алфавиту, так как все слова являются только буквенными, некоторые могут заканчиваться цифрой.

Спасибо, любая помощь приветствуется!

T.C

+4

Посмотрите на стандартную функцию ['qsort()'] (http://cplusplus.com/reference/clibrary/cstdlib/qsort/). –

+0

У меня нет массива слов, хотя это просто файл, содержащий слова, каждое слово считывается в один массив, модифицируется, а затем выводится. – PnP

+4

Или, если у вас уже есть файл, вы можете делегировать UNIX 'sort', который знает некоторые вещи о сортировке файлов, которые, вероятно, нет. Это не так эффективно в коде, но оно будет намного более жестким и лучше, чем то, что вы можете сделать сами, если вам нужно спросить об этом. @ Решение Oli - не выводить в файл, а строить массив, а затем 'qsort()' it. – Amadan

ответ

1

Вы сказали, что вы не имеете массив слов, но вы читаете каждую строку в отдельный массив символов. Это то, что вам нужно исправить. Объявите char *lines[MAXLINES], массив каждой строки из вашего входного файла. Прочитайте каждую строку из вашего входного файла в этот массив. Затем вы можете отсортировать этот массив, прежде чем возвращать его.

Это в значительной степени идентично концепциям, представленным в K & R Раздел 5.6 и 5.11.