c - scandir 按子串过滤

标签 c linux filter substring scandir

我正在尝试通过子字符串过滤 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/

相关文章:

c - 为什么我们需要将结构体字段放在堆内存中?

c - 带标记和空间奇偶校验的串行通信

linux - 禁止来自 VPN 的流量

python - boolean 索引的多个标准

javascript - 过滤数据时分页数字不会改变

linux - get_current() 在此内核模块中返回什么?

c - 数组索引效率(特别是临时变量)

linux - 64 位 Linux 上的 dbxtool 无法加载 64 位版本的 dbx?

php - Linux 上 WordPress 文件夹的文件和文件夹权限设置

c++ - OpenCV 只返回红色形状图像