linux C++ scandir 的使用
生活随笔
收集整理的這篇文章主要介紹了
linux C++ scandir 的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(1) 頭文件
#include <dirent.h>
(2) 函數定義
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);
(3) 使用說明
函數scandir掃描dir目錄下以及dir子目錄下滿足filter過濾模式的文件,返回的結果是compare函數經過排序的,并保存在 namelist中。注意namelist是通過malloc動態分配內存的,所以在使用時要注意釋放內存。alphasort和versionsort 是使用到的兩種排序的函數。
當函數成功執行時返回找到匹配模式文件的個數,如果失敗將返回-1。
(4) 使用示例
/*
scandir函數
*/
#include <stdio.h>
#include <dirent.h>
int customFilter(const struct dirent *pDir)
{
if (strncmp("test", pDir->d_name, 4) == 0
&& pDir->d_type & 0x04
&& strcmp(pDir->d_name, ".")
&& strcmp(pDir->d_name, ".."))
{
return 1;
}
return 0;
}
int main()
{
struct dirent **namelist;
int n;
int i;
n = scandir(".", &namelist, customFilter, alphasort);
if (n < 0)
{
perror("scandir");
}
else
{
for (i = 0; i < n; i++)
{
printf("%s
", namelist[i]->d_name);
free(namelist[i]);
}
free(namelist);
}
}
總結
以上是生活随笔為你收集整理的linux C++ scandir 的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 方块游戏:《只狼》《仙剑奇侠传七》免费抢
- 下一篇: logstash使用template提前