Linux C++ 使用fnmatch函数匹配文件名

看了fnmatch的相关介绍
FNM_PATHNAME
如果设置了这个标志,仅在字符串中匹配斜杠以斜线(/)中,而不能由星号(*)或者一个问号(?)元字符,也由括号表达式([])包含斜杠.
FNM_PERIOD
如果设置了这个标志 ,pattern 中的前导句点来匹配字符串中有精确的期限.如果被看作是领先的是字符的字符串,或如果有 fnm_pathname 是紧跟在斜杠和期限.
没看明白啊!!

我想实现一下这个功能 不知道怎么用那几个参数
文件匹配符,支持零到一个,不指定时认为是“*”,*表示匹配零到多个字符,要求支持前模糊匹配(*.zip ip等)后模糊(a. a.z*等)全匹配(*)

简单来说,这两个标识你都不用就对了。

名称
fnmatch 匹配文件名或路径名  
staging 模块
# include<<a href="http://linux.die.net/include/fnmatch.h" rel="nofollow">fnmatch.h>
 int  fnmatch(const  char *图案, const  char  *string , int  flags); 


描述


在fnmatch()函数检查匹配 pattern 的字符串参数,它是一个 shell 的通配符模式.  
flags 参数的修改行为;它是下列标志按位"或"的零个或零个以上的:
FNM_NOESCAPE如果设置了此标志,反斜线视为普通字符的转义字符 FNM_PATHNAME如果设置了这个标志,仅在字符串中匹配斜杠以斜线(/)中,而不能由星号(*)或者一个问号(?)元字符,也由括号表达式([])包含斜杠. FNM_PERIOD如果设置了这个标志 ,pattern 中的前导句点来匹配字符串中有精确的期限.如果被看作是领先的是字符的字符串,或如果有 fnm_pathname 是紧跟在斜杠和期限. FNM_FILE_NAME这是 gnu fnm_pathname 的同义词. FNM_LEADING_DIR 如果此标志(gnu扩展)设置,如果它匹配来匹配模式被认为是一个初始段的字符串,它后面跟有一个正斜杠.此标志主要用于在内部使用的 glibc ,只有在特定的情况下实现. FNM_CASEFOLD如果此标志(gnu扩展)设置,模式是匹配 case insensitively . 
返回值
如果字符串与模式匹配为零 ,fnm_nomatch 如果没有匹配或另一个非零值,如果有错误.  
符合
posix.2. fnm_file_name fnm_leading_dir ,和 fnm_casefold 的标志,在 gnu 扩展.  
参见
sh(1), glob(3), scandir(3), wordexp(3), glob(7)  
引用

collectd.conf(5), 找到(1)git,每个 ref(1)gitignore .(5), globus rls admin(8), init(5)netplugd .(8), pa(1), sudoers(5), tmux(1),a href ="/s/linux.die/65_2631/man 3 uwildmat.shtml"rel = <"nofollow">uwildmat(3)



http://blog.csdn.net/leeboy_wang/article/details/7974972