#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
char* commonstring(char* str1,char* str2)
{
char* shortstr,*longstr;
char* substr;
if(str1==NULL||str2==NULL)
return NULL;
//shortstr和longstr分別指向短和長的字串
strlen(str1)>=strlen(str2)?(longstr = str1,shortstr = str2):(shortstr=str1,longstr=str2);
// 使用strstr() 函數判斷短串是否是在長串裡面
if(strstr(longstr,shortstr)!=NULL)
return str2;
//申請一個短串長度加1的空串
substr = (char*)malloc(sizeof(char)*(strlen(shortstr)+1));
for(int i=strlen(shortstr)-1;i>0;i--)
{
for(int j=0;j<=(int)strlen(shortstr)-i;j++)
{
memcpy(substr,&shortstr[j],i); //將短串的一部分複製到substr中去
substr[i] = '/0'; //其長度逐漸縮小
if(strstr(longstr,substr)!=NULL) //如果在長串中能找到substr,則返回substr;
return substr;
}
}
return NULL;
}
int main()
{
char str1[100];
char str2[100];
cout<<"請輸入長串:"<<endl;
gets(str1);
cout<<"請輸入短串:"<<endl;
gets(str2);
char *commonstr = commonstring(str1,str2);
cout<<commonstr<<endl;
return 0;
}