侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 239 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

fnmatch函数用法详解

noerror
2022-10-04 / 0 评论 / 0 点赞 / 51 阅读 / 725 字 / 正在检测是否收录...

fnmatch函数用法详解

fnmatch函数简介

  • 头文件包含
#include <fnmatch.h>
  • 函数定义
int fnmatch(const char * pattern , const char * string , int  flags );

fnmatch函数常见使用错误

  • 编译错误
    warning: implicit declaration of function ‘fnmatch’ [-Wimplicit-function-declaration]
    解决办法:包含头文件
#include <fnmatch.h>

fnmatch函数详细描述

fnmatch ()函数检查string参数是否与pattern参数匹配,这是一个shell通配符模式(请参见glob (7))
flags参数修改行为;它是以下零个或多个标志的按位或:

  • FNM_NOESCAPE 如果设置了此标志,则将反斜杠视为普通字符,而不是转义字符。
  • FNM_PATHNAME 如果设置了此标志,则只将string中的斜杠与pattern中的斜杠匹配,而不使用星号(*)或问号(?)元字符,也不使用包含斜杠的括号表达式([])。
  • FNM_PERIOD 如果设置了这个标志,则string中的前导句点必须与pattern 中的句点完全匹配。如果句点是string 中的第一个字符,或者如果两个 FNM_PATHNAME 都设置了,并且句点紧随斜线后面,则该句点被认为是前导句点。
  • FNM_FILE_NAME 这是FNM_PATHNAME 的GNU同义词
  • 如果设置了这个标志(一个GNU扩展),则如果模式匹配string的初始段(后跟一个斜杠),则该模式被认为是匹配的。此标志主要用于glibc的内部使用,并且只在某些情况下实现。
  • FNM_CASEFOLD 如果设置了这个标志(一个GNU扩展),模式将不区分大小写地匹配。
  • FNM_EXTMATCH 如果设置了这个标志(一个GNU扩展),就支持扩展模式,正如&'ksh'所介绍的,现在其他shell也支持扩展模式。扩展格式如下,\fipatter-list\fr是一个&'分开的模式列表。
  • &'?(\fipatter-list\fr)'如果\fipatter-list\fr中的任何模式中有零个或一个匹配输入\fistring\fr,则该模式匹配。
  • &'*(\fipatter-list\fr)'如果\fipatter-list\fr中有零个或多个模式与输入\fistring\fr匹配,则该模式匹配。
  • &'+(\fipatter-list\fr)'如果\fipatter-list\fr中出现的任何一个或多个模式与输入\fistring\fr匹配,则该模式匹配。
  • &'@(\fipatter-list\fr)'如果\fipatter-list\fr中的任何一个模式恰好有一个匹配输入\fistring\fr,则该模式匹配。
  • &'!(\fipatter-list\fr)'如果输入\fistring\fr不能与\fipatter-list\fr中的任何模式匹配,则该模式将匹配。

fnmatch函数返回值

如果string匹配pattern ,则为零;如果没有匹配,则为 FNM_NOMATCH ,或者如果有错误,则为另一个非零值。

0

评论区