我有这个递归字符串函数和一个辅助函数,它结合了两个字符串(char指针):
#include <stdio.h>
#include <stdlib.h>
char* stringcat(char* s1, char* s2)
{
int length=0;
int sizes[2];
int c=0;
while(s1[c]!='\0')
++c;
length=c;
sizes[0]=c;
c=0;
while(s2[c]!='\0')
++c;
length+=c;
sizes[1]=c;
char *comboword=malloc(sizeof(char)*length);
for(int i=0; i<sizes[0]; i++)
comboword[i]=s1[i];
for(int j=sizes[0]; j<length; j++)
comboword[j]=s2[j-sizes[0]];
return comboword;
}
char* mmfu(int mm)
{
char* mmm="mm";
if (mm<=0)
return mmm;
else
return stringcat(mmm,mmfu(mm-1));
}
我这样称呼它:
int main()
{
int d;
scanf("%d",&d);
printf("%s %d\n",mmfu(1),d);
}
对于d为1和0的情况,输出是预期的mmmm(d)和mm(d),但是对于大于1的任何值,输出结果都是▒{▒6mmmm(使用mmfu(3)和d = 6 )或毫米波(2)和d = 5的▒{▒5m。我可以看到奇数输出有某种模式,但是我对为什么它首先出现感到非常困惑。任何帮助表示赞赏。谢谢!