Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > как работают findfirst () и findnext ()


Автор: SergeyMitrofanov 30.5.2007, 18:58
Compiler:  BC++ 3.1

На pure С написана программа, которая должна перебирать файлы из каталога в лексикографическом порядке, в алфавитном порядке. 

Использовались функции

  done = findfirst ("*.*", & info_file, 0);

  done = findnest(& info_file);

Но почему-то, откомпилированный код иногда читает файлы не в алфавитном порядке.

Файлы в директорию записывает пользователь под WindowsXP SP2.
Просмотр файлов осуществляется в Far - где мы видим файлы в отсортированном порядке.

Почему иногда программа читает файлы в алфавитном порядке, а иногда хаотично - берет первым файл из середины списка файлов?

По какому правилу  выбираются файлы функциями findfirst () и findnext ()?
Разве не по правилу - что первый файл - это тот, который стоит самым первым в алфавитном списке файлов внутри директории?
 

Автор: JackYF 30.5.2007, 19:43
Цитата(SergeyMitrofanov @  30.5.2007,  18:58 Найти цитируемый пост)
По какому правилу  выбираются файлы функциями findfirst () и findnext ()?
Разве не по правилу - что первый файл - это тот, который стоит самым первым в алфавитном списке файлов внутри директории?


Нет, скорее всего. Если в хелпе не написано обратного.

Автор: threef 30.5.2007, 19:49
Ну уж точно не в алфавитном порядке.
чтобы посмотреть, в каком порядке прочтет findnext запусти из командной строки dir.

Автор: dumb 31.5.2007, 00:04
читают в том порядке, в котором файлы попадали в каталог.
по сути, каталог(директория,папка) = файл-список, где каждый файл представлен "строчкой". копируешь в каталог файлик - "строчка" с его именем и другими атрибутами дописывается в конец файла-списка(каталога).
findfirst и findnext просто читают этот файл-список построчно.

поэтому необходимо получаемый список сортировать, что и делают все файл-манагеры...

Автор: BreakPointMAN 31.5.2007, 13:25
Если NTFS, то возвращаться будет в лексикографическом порядке. smile

Автор: dumb 31.5.2007, 13:37
хех.. не зналЬ
Цитата

The order in which this function returns the file names is dependent on the file system type. With the NTFS file system and CDFS file systems, the names are returned in alphabetical order. With FAT file systems, the names are returned in the order the files were written to the disk, which may or may not be in alphabetical order.

smile

Автор: threef 1.6.2007, 16:18
Это Борланд такой умный, что ль?

Автор: JackYF 1.6.2007, 16:40
Цитата(threef @  1.6.2007,  16:18 Найти цитируемый пост)
Это Борланд такой умный, что ль? 


А причем здесь Борланд? За файловые системы и особенности размещений файлов в папке он не отвечает.

Автор: Любитель 2.6.2007, 12:42
Цитата(JackYF @  1.6.2007,  16:40 Найти цитируемый пост)
особенности размещений файлов

Ну, скорее списка файлов в индексной таблице  smile 

Автор: JackYF 3.6.2007, 14:40
Цитата(Любитель @  2.6.2007,  12:42 Найти цитируемый пост)
Ну, скорее списка файлов в индексной таблице  smile 

Ну, это и имелось в виду.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)