C-用字符串将DEC数字转换为二进制代码



我在程序上工作。您可以输入普通数字,并且程序应首先以二进制代码进行转换,然后将其复制到字符串中。如果我启动程序并输入一个数字,什么也不会发生。

 #include <stdio.h>
#include <stdlib.h>
int main()
{   int i;
    unsigned short input;
    char output [18] = "";
    printf("enter a positive numbern");
    scanf("%hu", &input);
    for (i= 16; 1; i-- )
       {
          output [i] =  input % 2;
        input = input / 2;
       }
     puts(output);

    return 0;
}

output应该被终止,因此您需要16个字节 short int plus 1 for null-character

char output [17];

0的ASCII值添加到结果中以获得01

for(i = 16; i >= 0; i--)
{
    output[i] = '0' + input % 2;
    input = input / 2;
}

最后添加零字符:

output[16] = 0;

另外,您可以使用Shift Operator

unsigned int bitmask = 1 << (15 - i);
output[i] = '0' + ((input & bitmask) ? 1 : 0);

最新更新