思路

  1. 到字符串较少的数据
  2. 循环比较两个字符串中子串个数
  3. 如果和前1个子串相比,子串长度大则进行替换
  4. 将该子串存到另1个字符串数组中
  5. 循环完毕输出结果

Answer

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

int main() {
    char str1[1000];
    char str2[1000];
    char ans[1000];
    int max=0;
    while (scanf("%s\n%s", str1, str2) != EOF) {

        //找到字符串较少的数据
        if (strlen(str1) > strlen(str2)) {
            char temp[1000];
            strcpy(temp, str1);
            strcpy(str1, str2);
            strcpy(str2, temp);
        }
        
        for(int i=0; i<strlen(str1);i++){
            
            for(int j=0; j<strlen(str2); j++){
                int n=0;
                while(str1[i+n]== str2[j+n] && str1[i+n]!='\0'){
                    n++;
                }
                if(n>max){
                    max=n;
                    strcpy(ans,str1+i);
                    ans[max]='\0';
                }    
            }            
        }
        printf("%s\n",ans);     
    }
    return 0;
}