C语言程序,判断一个字符串是否是另一个字符串的子串,如是则输出第一次出现的位置

 我来答
自我编程
2018-06-01 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

#include<stdio.h>
#include<string.h>
int iszstr(char *str,char *zstr);//zstr是str的子串 返回出现的位置下标,否则返回-1
int main( )
{
    int renum;
    char str[100],zstr[100];
    while(1)
    {
        str[0]=zstr[0]=0;
        printf("输入母串:");
        scanf("%s",str);
        printf("输入可能的子串:");
        scanf("%s",zstr);
        renum=iszstr(str,zstr);
        if(renum<0)
            printf("不是子串!\n\n");
        else
            printf("是子串,起始位置在下标%d处!\n\n",renum);
    }

    return 0;
}
int iszstr(char *str,char *zstr)
{
    char *p1=str,*p2=NULL,*pSave=NULL,flag;
    while(*p1)
    {
        if(*p1==zstr[0] && strlen(p1)>=strlen(zstr))//先找到对应的首字符位置
        {
            pSave=p1;
            p2=&zstr[0];
            flag=1;
            while(*p2)
            {
                if(*p1!=*p2)
                {
                    flag=0;
                    break;
                }
                p1++;
                p2++;
            }
            if(flag==1)
            {
                return pSave-&str[0];
            }
            else
                p1=pSave;
        }
        p1++;
    }
    return -1;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式