Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как работают findfirst () и findnext (), файлы не читаются в алфавитном порядке 
:(
    Опции темы
SergeyMitrofanov
Дата 30.5.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



Compiler:  BC++ 3.1

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

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

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

  done = findnest(& info_file);

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

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

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

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

PM MAIL WWW   Вверх
JackYF
Дата 30.5.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



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


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



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
threef
Дата 30.5.2007, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



Ну уж точно не в алфавитном порядке.
чтобы посмотреть, в каком порядке прочтет findnext запусти из командной строки dir.
PM MAIL   Вверх
dumb
Дата 31.5.2007, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



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

поэтому необходимо получаемый список сортировать, что и делают все файл-манагеры...
PM MAIL   Вверх
BreakPointMAN
Дата 31.5.2007, 13:25 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



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


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
dumb
Дата 31.5.2007, 13:37 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



хех.. не зналЬ
Цитата

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
PM MAIL   Вверх
threef
Дата 1.6.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 9
Всего: 10



Это Борланд такой умный, что ль?
PM MAIL   Вверх
JackYF
Дата 1.6.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



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


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



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Любитель
Дата 2.6.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 24
Всего: 92



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

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


--------------------
PM MAIL ICQ Skype   Вверх
JackYF
Дата 3.6.2007, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



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

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



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0792 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.