在C语言中将十进制整数转换为二进制字符串

在C语言中将十进制整数转换为二进制字符串,c,string,binary,C,String,Binary,下面是我尝试的代码。我使用了一个函数char*dectobin(int)来实现这一点。我首先将十进制整数转换为二进制整数(保存在二进制中),然后将该二进制整数转换为字符数组(先按相反顺序,然后按正确顺序)。但我没有得到正确的输出。谁能告诉我哪里出了毛病 #include <stdio.h> #include <math.h> char* dectobin(int dec_num); main() { int num; printf("Enter the integer\n

下面是我尝试的代码。我使用了一个函数char*dectobin(int)来实现这一点。我首先将十进制整数转换为二进制整数(保存在二进制中),然后将该二进制整数转换为字符数组(先按相反顺序,然后按正确顺序)。但我没有得到正确的输出。谁能告诉我哪里出了毛病

#include <stdio.h>
#include <math.h>
char* dectobin(int dec_num);
main()
{
int num;
printf("Enter the integer\n");
scanf("%d",&num);
char* bin_string=dectobin(num);
printf("The binary string representation is %s\n",bin_string);
}
char* dectobin(int dec_num)
{
int remainder;
int base=1; 
int binary=0;
int count=0;
int n;

    while (dec_num > 0)

    {

        remainder = dec_num % 2;

        binary = binary + remainder * base;

        dec_num = dec_num / 2;

        base = base * 10;

    }

 n = log10(binary) + 1;
        int i;
      char* numberArrayreverse = calloc(n, sizeof(char));
        for ( i = 0; i < n; ++i, binary /= 10 )
        {
            numberArrayreverse[i] = binary % 10;
        }
        char* numberArray=calloc(n, sizeof(char));

int j=0;
for(;j<n;j++)
{
numberArray[j]=numberArrayreverse[n-1-j];
}
 //free(numberArrayreverse);
return numberArray;
}
#包括
#包括
字符*dectobin(int dec_num);
main()
{
int-num;
printf(“输入整数\n”);
scanf(“%d”和&num);
char*bin_string=dectobin(num);
printf(“二进制字符串表示为%s\n”,bin\u字符串);
}
字符*dectobin(整数dec_num)
{
整数余数;
int base=1;
int二进制=0;
整数计数=0;
int n;
而(dec_num>0)
{
余数=dec_num%2;
二进制=二进制+余数*基数;
dec_num=dec_num/2;
基数=基数*10;
}
n=log10(二进制)+1;
int i;
char*numberArrayreverse=calloc(n,sizeof(char));
对于(i=0;i对于(;j
numberrayReverse
不正确,需要将整数转换为字符

numberArrayreverse[i] = binary % 10 + '0';

输入是什么?是
base=base*10;
还是
binary=binary+rements*base;
溢出?不是。输入很小,23。这并不能解决问题
calloc(n,sizeof(char));
对于
n
数字字符串来说也太小了。@chux:同意,但它仍然有效。