#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *commonstring(char *str1,char *str2)
{
int i,j;
char *longstr,*shortstr;
char *substr;
//判断是否为空
if(*str1 == NULL || *str2 == NULL)
{
return NULL;
}
//判断字符串的长度
if(strlen(str1) <= strlen(str2))
{
longstr = str2;
shortstr = str1;
}
else
{
longstr = str1;
shortstr = str2;
}
//查看较长的字符串是否完全包含较短的字符串
if(strstr(longstr,shortstr) != NULL)
{
return shortstr;
}
//在堆上动态分配内存放最大公共字符串,
substr = (char *)malloc(sizeof(shortstr)+1);
for(i=strlen(shortstr)-1;i>0;i--)
{
for(j = 0; j<=(strlen(shortstr)-i); j++)
{
memcpy(substr, &shortstr[j], i);
substr[i] = '\0';
if(strstr(longstr,substr) != NULL)
{
return substr;
}
}
}
return NULL;
}
int main()
{
char *str1 = (char *)malloc(256);
char *str2 = (char *)malloc(256);
char *common = NULL;
gets(str1);
gets(str2);
common = commonstring(str1,str2);
printf("the longest common strng is: %s\n",common);
return 0;
}