含通配符‘?’的字符串的匹配

本文介绍了一个使用C++实现的简单程序,该程序能够利用通配符“?”执行字符串匹配,其中“?”可以匹配任意单个字符。通过具体实例展示了如何在目标字符串中查找包含特定模式的子串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写一个程序,执行汉通配符‘?’的字符串的匹配,该通配符可以与任一个字符匹配成功。
分析:从头开始扫描字符串string的每个字符,在当前字符等于字串的字符或者字串的当前比较的字符是‘?’时,字串指针向前推进,当子串指针为‘\0’时比较完毕并返回对应位置;否则重新从string串的当前位置与子串进行比较。当未找到匹配的且string结束时,返回-0

#include<iostream.h>
int pattern_index(char *subString ,char *string);

int main(){
    char *string ,*subString;
    int same ;
    subString  = "???gram";//能通过输入赋值?
    string = "this program return index of substring ";
    same = pattern_index(subString,string);
    if(same)
        cout<<"字串起始位置:"<<same<<endl;
    else
        cout<<"匹配失败!"<<endl;
    return 0;
}
int pattern_index(char *subString ,char *string){
    int i,j,k;

    for(i = 0;string[i];i++){
        for(j=i,k=0;(string[j]==subString[k])||(subString[k]=='?');j++,k++){
            if(!subString[k+1])
                return i;
        }
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值