Linux c 目錄操作函數scandir
頭文件
#include <dirent.h>
函數定義:
int scandir(const char *dir,struct dirent **namelist,int (*filter)(const void *b),
int ( * compare )( const struct dirent **, const struct dirent ** ) );
int alphasort(const void *a, const void *b);
int versionsort(const void *a, const void *b);
函數scandir掃描dir目錄下(不包括子目錄)滿足filter過濾模式的文件,返回的結果是compare函數經過排序的,并保存在 namelist中。注意namelist是通過malloc動態分配內存的,所以在使用時要注意釋放內存。alphasort和versionsort 是使用到的兩種排序的函數。
當函數成功執行時返回找到匹配模式文件的個數,如果失敗將返回-1。
eg:
#include <dirent.h>
int main()
{
struct dirent **namelist;
int n;
n = scandir(".", &namelist, 0, alphasort);
if (n < 0)
{
perror("not found\n");
}
else
{
while(n--)
{
printf("%s\n", namelist[n]->d_name);
free(namelist[n]);
}
free(namelist);
}
}