Не могу отсканировать каталог, чтобы появились файлы - PullRequest
0 голосов
/ 17 апреля 2020

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

В настоящее время мой код для сканирования каталога использует функцию scandir():

int n = scandir(path, &namelist, NULL, alphasort);

Это сортирует файлы в папке в алфавитном порядке, что не совсем то, что я хочу.

Редактировать: я пытался использовать opendir () и readdir (), но это доступ к файлам в, казалось бы, случайном порядке.

1 Ответ

0 голосов
/ 17 апреля 2020

Согласно справочной странице versionort

int versionsort(const void *a, const void *b);

может быть передано в качестве обратного вызова на scandir() и объявлено в dirent.h.


Первое, что нужно проверить: «Требования к макросу тестирования возможностей»

На той же странице, на которую ссылаются выше:

Требования к макросу тестирования функций для glib c (см. Feature_test_macros (7)):

scandir(), alphasort(): _BSD_SOURCE || _SVID_SOURCE

versionsort(): _GNU_SOURCE.

Эти макросы необходимо определить перед включением dirent.h, чтобы включить функцию c.


Второе, что нужно проверить: glib c версия

С той же страницы, на которую ссылаются выше:

Версии

versionsort() был добавлен в glib c в версии 2.1.

Пожалуйста, обратитесь к этому вопросу , чтобы узнать, как проверить вашу версию glib c.

...