是不是vc的strcat函数有问题???
下边的函数求两个字符串的最长相同子串,但是就是不出结果为何?
我跟了一下发现在strcat函数有问题,出现一大堆汇编,我看不懂,求高手指点.
我是在vc6.0下编译的,跟到一个intel strcat.asm文件就不懂了.
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define MAXLENGTH 100
char* commonstring(char* str1,char* str2)
{
char* temp=(char*)malloc(sizeof(char)*20);
//如果任意一个字符串到达结尾,退出递归;返回空字符串;
if((*str1=='\0')||(*str2=='\0'))
return (char*)0;
//当两个字符串的首字母相等,则最大子串
//等于首字母加上两个字符串都去掉首字母的最大子串;
if(*str1==*str2)
{
char* temp3=commonstring(str1+1,str2+1);
char* temp4=(char*)malloc(sizeof(char)*2);
*temp4=*str1;
temp4++;
*temp4='\0';
temp=strcat(temp4,temp3);
}
//如果两个字符串的首字母不相等,则等于第一个字符串去掉首字母与第二个字符串的
//最大子串和第一个字符串与第二个字符串去掉首字母的最大子串中比较长的一个.
else
{
char *temp1,*temp2;
temp1=commonstring(str1+1,str2);
temp2=commonstring(str1,str2+1);
int len1=strlen(temp1);
int len2=strlen(temp2);
temp=len1>len2?commonstring(str1+1,str2):commonstring(str1,str2+1);
}
return temp;
}
int main(int argc, char* argv[])
{
char* str1="abcdef";
char* str2="bcde";
char* result=NULL;
result=commonstring(str1,str2);
printf("the commonstring is %s;\n",result);
char* str3=substr(str1,1,strlen(str1)-1);
printf("%s\n",str3);
free(result);
return 0;
}