我正在尝试通过子字符串过滤 scandir
。我的函数可以正常工作,但只能使用预先确定的字符串。
int nameFilter(const struct dirent *entry) {
if (strstr(entry->d_name, "example") != NULL)
return 1;
return 0;
}
但是我找不到过滤 argv[i]
的方法,因为我无法声明它。
int (*filter)(const struct dirent *)
你们知道什么解决办法吗?
最佳答案
您可能必须使用全局变量,如果在线程环境中或从信号处理程序中使用,则会产生所有不良副作用:
static const char *global_filter_name;
int nameFilter(const struct dirent *entry) {
return strstr(entry->d_name, global_filter_name) != NULL;
}
并在调用 scandir
之前设置 global_filter_name
。
关于c - scandir 按子串过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34803516/