Функция scandir() сканирует каталог dir, вызывая select() для каждой записи каталога как «int (* filter) (const struct dirent *)» Как пропустить шаблон значение как параметр для fnmatch (const char * pattern, const char * string, int flags) функция, используемая в фильтре?Как я могу параметризовать функцию select в scandir
Вот мой пример кода
int my_selectgrf(const struct dirent *namelist)
{
int r = 0;
char my_pattern[] = "*.grf";
r = fnmatch(my_pattern, namelist->d_name, FNM_PERIOD);
return (r==0)?1:0;
}
scandir("/pub/data/grf", &namelist, my_selectgrf, alphasort);
моя цель состоит в том, чтобы иметь возможность использовать my_pattern в качестве входного параметра.
Что происходит, когда вы делаете то, что вы показываете в своем коде? Вы получаете ошибки компиляции? Ошибки времени выполнения? Он работает не так, как ожидалось (в этом случае, каковы фактические и ожидаемые результаты?) –
'my_pattern' или' pattern'? – 0x90
my_pattern, извините, я исправил код – famedoro