为什么调试时卡在了第26行gets那? 求指正!!!!!
return abs(strlen(str1) - strlen(str2));
return strDist(str1 +1,str2 + 1);
改成这样就好了:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MIN(x,y) ((x)<(y)?(x):(y))
static int strDist(char * str1,char * str2)
{
if(strlen(str1)==0||strlen(str2) == 0)
{
return abs(strlen(str1) - strlen(str2));
}
if(str1[0] == str2[0])
{
return strDist(str1 +1,str2 + 1);
}
int t1,t2,t3;
t1 = strDist(str1,str2 + 1);
t2 = strDist(str1 + 1,str2);
t3 = strDist(str1 + 1, str2 + 1);
return MIN(MIN(t1,t2),t3) + 1;
}
int main()
{
char s1[50];
char s2[50];
printf("请输入字符串1和字符串2:(回车间隔)\n");
gets(s1);
getchar();
gets(s2);
printf("strDist = %d\n",strDist(s1,s2));
}
改成 char s1[100];
char s2[100]; 你定义两个char*,并没有分配空间,当然不能输入数据了