c - 字符串未显示在 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);
任何建议将不胜感激!谢谢你。
解决方案
问题是您将字符串的值设置为 1 或 0。当该字符串被打印时,这些数字由ASCII 表解释。1 和 0 都代表不可打印的字符。事实上,0 被称为“空终止符”,它会导致 C 在看到该值时停止打印。
相反,您需要“1”和“0”的 ASCII 表示,它们分别是 31 和 30。所以,你可以用
binary[i] = 30 + number % 2;
编辑:
应该是30 + !!(number % 2)
。这将处理number
负面的情况。
推荐阅读
- php - 如何使用无限循环计算表内所有行的总数来自 phpmyadmin(2019 年 12 月 23 日)
- python - 根据熊猫数据框中的百分位数数据获取最常见的值和标准
- r - 如何在 R 中打开数据库文件?
- r - 将实际日期添加到 csv 输出文件名
- sql - 如何通过从另一个 nvarchar 列获取值来更新数字列?
- c++ - C++ 以二进制模式写入和读取文件
- magento - 如何在 magento 2.3.3 中获得总计?
- python - 深度学习 - 不断获得低准确率
- vb.net - 操作未成功完成,因为该文件包含病毒或可能不需要的软件。(来自 HRESULT 的异常:0x800700E1)
- php - Magento 2:自定义类别属性 - 图片上传 Ajax 404