我最近开始用C编程,无论我怎么努力,我都真的找不到这里的错误。
char* dec2Bin(int number) {
char* bin = calloc(9, sizeof(char));
if(bin!=NULL) {
bin[8] = '\0';
int i = 7;
while(number != 0 && i>=0){
bin[i] = (number%2) +'0';
number/=2;
i--;
}
}
return bin;
}
int main() {
int number;
printf("Enter a number: ");
scanf("%d", &number);
char* bin = dec2Bin(number);
if(bin!=NULL) {
printf("%s", bin);
free(bin);
return EXIT_SUCCESS;
}
return EXIT_FAILURE;
}
输入数字后,它什么也不显示;奇怪的是,当我在函数循环中执行printf时,它确实为bin [i]打印了一些内容。
在此先感谢您的帮助。
void *calloc(size_t nmemb, size_t size)
分配nmemb
数量的内存块并初始化它们0
,在\0
这种情况下,将其类型转换为字符。现在,printf
将打印bin
字符串,直到获得\0
字符为止。让我们举个例子。如果我输入12
输出应该是1100
。但是在你的bin
字符串中是\0\0\0\01100\0
。因此printf
在遇到第一个\0
字符后停止打印。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句