man scandir
дает мне следующую структуру функции scandir
:
int scandir(const char *dirp, struct dirent ***namelist,
int (*filter)(const struct dirent *),
int (*compar)(const struct dirent **, const struct dirent **));
Предположим, я определил следующее:
struct dirent **namelist;
int len = scandir('.', &namelist, NULL, NULL)
это список всех файлов и имен папокв текущей папке.Но предположим, что у меня есть функции filter
и compar
следующей структуры:
int (*filter)(const struct dirent *) {
}
и аналогичные для сравнения, и я хочу вызвать эту функцию фильтра или просто NULL
на основе некоторых критериев:
if (some criteria) int *filters = NULL;
else int* filters = &filter
int len = scandir('.', &namelist, filters, NULL)
но это дает ошибку указателя.Есть ли способ это исправить?