首页 > 解决方案 > 字符串未显示在 C 的控制台中

问题描述

我正在尝试将数字转换为二进制字符串:

void num_to_binary(const int num, char *binary) {
  int number = num;
  for(int i = 0; number > 0; i++){
   binary[i] = number % 2;
   number = number/ 2;
  }
  int length = strlen(binary);
  binary[length] = '\0';
  printf("%s", binary);
 }

虽然我确定二进制字符串包含我想要的内容(我通过 printf("printed %d end",binary[i]);在 for 循环中使用测试了代码),但我无法通过编写代码将其打印出来printf("%s", binary); 任何建议将不胜感激!谢谢你。

标签: c

解决方案


问题是您将字符串的值设置为 1 或 0。当该字符串被打印时,这些数字由ASCII 表解释。1 和 0 都代表不可打印的字符。事实上,0 被称为“空终止符”,它会导致 C 在看到该值时停止打印。

相反,您需要“1”和“0”的 ASCII 表示,它们分别是 31 和 30。所以,你可以用

binary[i] = 30 + number % 2;

编辑:

应该是30 + !!(number % 2)。这将处理number负面的情况。


推荐阅读