方法一:暴力破解,不断回溯字符串s2进行循环比较。

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

#define MAX(a,b) (a>b?a:b)

int get_len(int s1_start, int s2_start);

char s1[150] = {0};
char s2[150] = {0};

int main() {
    int max_len, count;

    while (scanf("%s %s", s1, s2) != EOF) {
        max_len = 0;
        for (int i = 0; i < strlen(s1); i++) {
            for (int j = 0; j < strlen(s2); j++) {
                if(s1[i] != s2[j])
                    continue;
                max_len = MAX(get_len(i,j), max_len);
            }
        }
        
        printf("%d\n",max_len);
    }

    return 0;
}

int get_len(int s1_start, int s2_start){
    int count = 0;
    char chs1,chs2;
    do{
        chs1 = *(s1 + s1_start + count);
        chs2 = *(s2 + s2_start + count);
        if(chs1 == '\0' || chs2 == '\0'
          || chs1 != chs2){
            break;
        }        
        count++;
    }while(1);
    return count;
}