我正在尝试对可能包含子文件夹的文件夹执行DFS。目标是从目录中找到所有.txt
文件。我需要按DFS查找它们的顺序查找.txt
文件,并将文件的顺序保留在一个文件夹中。
当前,我用于扫描目录的代码使用scandir()
功能:
int n = scandir(path, &namelist, NULL, alphasort);
这将按字母顺序对文件夹中的文件进行排序,这并不是我想要的。
编辑:我曾尝试使用opendir()和readdir(),但这是以看似随机的顺序访问文件的。
int versionsort(const void *a, const void *b);
可以作为回调传递给scandir()
,并在dirent.h
中声明。
从上面链接的同一页面上:
glibc的功能测试宏要求(请参阅feature_test_macros(7)):
scandir()
,alphasort()
:_ BSD_SOURCE || _SVID_SOURCE
versionsort()
:_GNU_SOURCE。
这些宏需要在包含dirent.h
之前定义,以启用特定功能。
从上面链接的同一页面上:
版本
versionsort()
已添加到2.1版的glibc中。
请参考this question了解如何检查您的glibc版本。