Если вам не нужны начальные нули, вы можете просто использовать itoa (значение, outputtring, base)
Например
char s[9];
itoa(10, s, 2);
printf("%s\n", s);
распечатает
1010
В противном случае вы можете просто написать очень простую функцию.
void tobin5str(int value, char* output)
{
int i;
output[5] = '\0';
for (i = 4; i >= 0; --i, value >>= 1)
{
output[i] = (value & 1) + '0';
}
}
int main()
{
char s[6];
tobin5str(10, s);
printf("%s\n", s);
return 0;
}
распечатает
01010
Более общим подходом может быть функция, которая спрашивает вас, сколько бит нужно преобразовать.
void tobinstr(int value, int bitsCount, char* output)
{
int i;
output[bitsCount] = '\0';
for (i = bitsCount - 1; i >= 0; --i, value >>= 1)
{
output[i] = (value & 1) + '0';
}
}
Конечно, битCount должен иметь значение от 1 до 32, а строка буфера должна быть выделена как минимум для битов + 1 символов.