C语言 域名通配符实现
本例实现通配符 * 的功能,不支持*在字符串的末尾, 仅提供思路,函数仅做简单单元测试。 如有使用,还请自己进行修改
// str1: 待匹配字符串
// str2: 带通配符字串
int wildcard_match(char *str1, char *str2)
{
if(str1 == NULL || str2 == NULL)
return ; int len1 = strlen(str1);
int len2 = strlen(str2); char *tmp_str = str2 ;
int tmp_len = len2 ;
int location = ;
int match_flag = ;
int i = ; // 查询 str2中是否含有通配符 *, 两种方法,从前、后分别找*
/* while(tmp_len--) {
if(tmp_str[tmp_len] == '*'){
location = tmp_len+1 ; // +1 for judge when the * be the first letter.
break ;
}
} */ while(i<tmp_len) {
if(tmp_str[i] == '*') {
location = i+ ; // 加1 是为了处理 *出现在开头的情况。 在开头的话,location == 0;
break ;
}
i++ ;
} // Get the *
char *tmp_str1 = str1 ;
char *tmp_str2 = str2 ; // 如果找到location 不为0 ,那么就进行通配符匹配。
if(location) {
location -= ;
// if location is 0 , the strncmp function will return 0 too .
//现对比* 前的字符串, 如果前面都没匹配,直接返回未匹配结果
if(!strncmp(str1, str2, location)) {
tmp_len = len2 - location ;
tmp_str1 += len1 ;
tmp_str2 += len2 ; //在匹配*后的字符串,从尾往前找。
while(--tmp_len && (*tmp_str1 == *tmp_str2)){
tmp_str1 -- ;
tmp_str2 -- ;
} match_flag = tmp_len?: ;
}
} return match_flag ;
}
C语言 域名通配符实现的更多相关文章
- 新开源HTML5单文件网页版ACME客户端,可在线申请Let's Encrypt、ZeroSSL免费HTTPS多域名通配符泛域名SSL/TLS证书(RSA/ECC/ECDSA)
目录 开源项目的起源 项目地址 使用方法 第一步:选择Let's Encrypt.ZeroSSL或其他证书颁发机构 第二步:证书配置,填写域名 第三步:完成域名所有权的验证 第四步:下载保存证书PEM ...
- 在macOS平台下制作SSL证书,免费域名通配符证、单域名证书、多域名证书教程
1.安装 home-brew 2.安装 certbot 在终端执行下面命令 brew install certbot 3.制作SSL证书 第一步: 在终端执行下面命令 sudo certbot cer ...
- Let's Encrypt 免费通配符 SSL 证书申请教程——但是也需要email,域名所有权等,如果是黑产用的话会这样用吗?会不会暴露自己身份???
Let's Encrypt 免费通配符 SSL 证书申请教程 from:https://blog.csdn.net/English0523/article/details/79608464 2018 ...
- Linux 通过HTTP进行域名更新
一.3322动态域名更新接口 接口地址 API URL http://members.3322.net/dyndns/update HTTP请求 GET /dyndns/update?hostname ...
- CA机构介绍(Certificate Authority 域名SSL证书颁发机构)
SSL证书机构即CA机构的全称为Certificate Authority证书认证中心,只有通过WebTrust国际安全审计认证,根证书才能预装到主流浏览器,成为全球可信的ssl证书颁发机构. HTT ...
- ssl证书---验证域名数量分类
单域名SSL证书 : 单一域名 多域名SSL证书 : 多个域名 通配符SSL证书 : 通配符域名
- SwitchOmega的详细配置——for Windows
必看 先下载Shadowsocks客户端进行相应配置,然后只要对SwitchOmega 进行新建情景模式后简单配置即可. 本文不谈如何安装SwitchOmega只谈如何配置SwitchOmega 不会 ...
- Python使用re实现计算器
re 正则表达式 计算器 海瑞博客-学习python之路•2016-12-01•Python• 59•0•A+ A- re是一门小型语言 元字符 . 通配符除了\n ^ 以什么开始的 ...
- Thawte SSL123 SSL证书-中国证书.com
Thawte SSL123 SSL证书是域名验证型证书.也是Thawte最廉价的一款证书.该证书签发方便,仅仅须要验证域名全部权就可以签发,无需提交认证文件,通常签发时间仅仅须要1-2个小时.SSL1 ...
随机推荐
- pair 对组
pair 对组 c++ 基础 2016-05-10 19:42 154人阅读 评论(0) 收藏 举报 分类: 头文件的函数精粹(12) 版权声明:本文为博主原创文章,未经博主允许不得转载. 与关联 ...
- poj 1659 Frogs' Neighborhood( 青蛙的邻居)
Frogs' Neighborhood Time Limit: 5000MS Memory Limit: 10000K Total Submissions: 9639 Accepted: 40 ...
- HDU 1011 Starship Troopers 树形+背包dp
http://acm.hdu.edu.cn/showproblem.php?pid=1011 题意:每个节点有两个值bug和brain,当清扫该节点的所有bug时就得到brain值,只有当父节点被 ...
- [转载]C++内存管理
[导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不 ...
- Mysql插入数据时,报错this is incompatible with sql_mode=only_full_group_by
Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'inform ...
- bzoj 2763: [JLOI2011]飞行路线 -- 分层图最短路
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Description Alice和Bob现在要乘飞机旅行,他们选择了一家相 ...
- 某DP题目1
题意: 有n个由左右括号组成的字符串,选择其中若干字符串,使得组成的括号序列合法且长度最长.n <= 1000,n个字符串的长度和 <= 10000. 分析: 其实我一开始做这一题的时候, ...
- asp.net mvc4 简单使用Autofac依赖注入小结
1,首先使用 NuGet下载适当的Autofac版本 文件一,Autofac.3.5.2 文件二,Autofac.Mvc4.3.1.0 1,接口类 public interface IReposito ...
- SQl CASE 语句的嵌套使用方式
case具有两种格式.简单case函数和case搜索函数. 1.简单case函数 case sex when ’1’ then ’男’ when ’2’ then ’女’else ’其他’ end ...
- HDU 4667 Building Fence(2013多校7 1002题 计算几何,凸包,圆和三角形)
Building Fence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)To ...