c语言指针最大字符串匹配长度

img


要用到指针赋值但是没有思路,用的循环写结果越写越乱了,如果可以希望能解释一下做法之类的

遍历字符串进行比较,需要先找到完整的子串,然后再统计长度

运行结果:

img

代码:

#include <stdio.h>
#include <string.h>


int fun(char* s1,char* s2)
{
    char* p,*q;
    int len = strlen(s2);
    int tmplen = 0,maxlen = 0;
    while(*s1 !='\0')
    {
        //找到匹配s2的位置
        p = s1;
        q = s2;
        while( (*p !='\0') && (*q!='\0') )
        {
            if(*p == *q)
            {
                p++;
                q++;
            }else
                break;
        }
        if(*q == '\0') //说明找到匹配的字符串
        {
            //开始判断长度
            tmplen = len;
            while(*p !='\0')
            {
                q = s2;
                while( (*p !='\0') && (*q!='\0') && (*q == *p) )
                {
                    tmplen++;
                    q++;
                    p++;
                }
                if(tmplen > maxlen)
                {
                    maxlen = tmplen;
                }
                if(*q != '\0')
                {
                    break;
                }
            }
            s1++;
        }else
            s1++;//s1指针后移
    }
    return maxlen;
}


int main()
{
    int N,i,j;
    int len =0,maxlen = 0;
    char str1[10010]={0};
    char str2[10010]={0};
    scanf("%d",&N);
    getchar();
    for(i=0;i<N;i++)
    {
        gets(str1);
        gets(str2);
        printf("%d\n",fun(str1,str2));
    }
    return 0;
}