我正在尝试将数字转换为二进制字符串:
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);
任何建议将不胜感激!谢谢。
您必须这样做binary[i] = !!(number % 2) + '0';
,否则strlen()会在原本不应存在的位置找到空字符(值为零),它可能是您情况下的第一个字符。请参见下面的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void num_to_binary(const int num, char *binary) {
int number = num;
for(int i = 0; number > 0; i++){
binary[i] = !!(number % 2) + '0';
number = number/ 2;
}
int length = strlen(binary);
binary[length] = '\0';
printf("%s", binary);
}
int main(void)
{
char buffer[100];
num_to_binary(25, buffer);
return 0;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句