计算字符串的距离。编写函数 int strDist(char *str1,char* str2)

为什么调试时卡在了第26行gets那? 求指正!!!!!

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #define MIN(x,y) ((x)<(y)?(x):(y))
  5. static int strDist(char * str1,char * str2)
  6. {
  7. if(strlen(str1)==0||strlen(str2) == 0)
  8. {
  9.   return abs(strlen(str1) - strlen(str2));
    
  10. }
  11. if(str1[0] == str2[0])
  12. {
  13.   return strDist(str1 +1,str2 + 1);
    
  14. }
  15. int t1,t2,t3;
  16. t1 = strDist(str1,str2 + 1);
  17. t2 = strDist(str1 + 1,str2);
  18. t3 = strDist(str1 + 1, str2 + 1);
  19. return MIN(MIN(t1,t2),t3) + 1;
  20. }
  21. int main()
  22. {
  23. char * s1 = "";
  24. char * s2 = "";
  25. printf("请输入字符串1和字符串2:(回车间隔)\n");
  26. gets(s1);
  27. gets(s2);
  28. printf("strDist = %d\n",strDist(s1,s2));
  29. }

改成这样就好了:

#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));
}

img

改成 char s1[100];

char s2[100]; 你定义两个char*,并没有分配空间,当然不能输入数据了