2013-07-12 4 views
3

Я использую функцию scandir() в C, в папке, где мне нужно получить файлы с именами файлов в точности = "exe".Фильтрация scandir для имен файлов в папке C Язык

Как я могу отфильтровать записи, возвращаемые скандиром?

Третий аргумент ScanDir является фильтр:

int scandir(const char *dirp, struct dirent ***namelist, 
     int (*filter)(const struct dirent *), 
     int (*compar)(const struct dirent **, const struct dirent **)); 

это может быть полезно для моей цели?

ответ

7

Да, аргумент фильтра - это указатель на функцию, который позволяет передавать функцию для фильтрации результатов. Возможно, вы захотите написать функцию, подобную приведенной ниже, и передать ее по имени в качестве значения для фильтра.

int file_select(const struct dirent *entry) 
{ 
    return strcmp(entry->d_name, "exe"); 
} 
+0

Отлично! Спасибо! –