文件名匹配搜索

内在的匹配搜索,不需要子进程,直接使用glob()函数匹配搜索:
#include <glob.h>
int glob(const char *pattern, int flags, int errfunc(const char *epath, int eerrno), glob_t *pglob);
glob_t结构体用来保存匹配搜索的结果:
typedef struct
{
     int gl_pathc;//匹配已知模式串的文件名个数
     char **gl_pathv;//匹配模式串的文件名数组
     int gl_offs;
}glob_t;
glob_t使用完成后必须通过globfree()函数释放内存。
范例:
#include <errno.h>
#include <glob.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

int errfn(const char *pathname, int err)
{
    fprintf(stderr, "error accessing %s:%s/n", pathname, strerror(err));
    return 0;
}

int main(int argc, char **argv)
{
    glob_t result;
    int i,rc,flags;
    if(argc<2)
    {
        printf("wrong args/n");
        return 1;
    }
    flags=0;
    for(i=1;i<argc;i++)
    {
        rc=glob(argv[i], flags, errfn, &result);
        if(rc==GLOB_NOSPACE)
        {
            fprintf(stderr, "out of space/n");
            return 1;
        }
        flags|=GLOB_APPEND;
    }
    if(!result.gl_pathc)
    {
        fprintf(stderr, "no matches/n");
        rc=1;
    }
    else
    {
        for(i=0;i<result.gl_pathc;i++)
            puts(result.gl_pathv[i]);
        rc=0;
    }
    globfree(&result);
    return rc;
}

运行例子:

aCC -o glob_test glob_test.cpp

 

glob_test  /cbbs_js1/balance/zhangxr/glob_test/*file*

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值