【发布时间】:2014-12-20 23:01:06
【问题描述】:
尽管我对高级语言有更多经验,但我在理解内存 allocation 以及 strings 如何在 C 中真正发挥作用时遇到了很多麻烦。
我正在尝试实现一个非常简单的以递归方式工作的基本转换器。唯一的问题是它应该返回 char* 而不是 int
这是我的代码。我已经测试了递归调用,如果我使用整数,它就可以工作。所以,问题肯定出在字符串部分。它给了我一个无限循环。
char* baseConversion(int num, int baseIn, int baseOut){
//convert num to base ten
int quotient = num / baseOut;
int remainder = num % baseOut;
char rem = (char)(((int)'0') + remainder);
char *result = malloc(strlen(output) + 1);
strcpy(result, rem);
if (quotient == 0)
return result;
else
return strcat(result, baseConversion(quotient, baseIn, baseOut));
}
非常感谢
【问题讨论】:
-
我在任何地方都没有看到问题...
-
strcpy的第二个参数必须是一个以 null 结尾的字符串。rem是一个字符,而不是一个字符串。 -
第六行说有一个无限循环超酷的家伙;)
-
真@Barmar。让我看看我能做什么。
-
@CoolGuy:问题不需要以问号结尾。
标签: c recursion char strcpy strcat