Создать функцию, которая формирует символьную строку с двоично-десятичным кодом числа

Создать функцию, которая формирует символьную строку с двоично-десятичным кодом целого положительного десятичного числа (в строке между тетрадами кода должен быть один пробел). Сгенерировать массив из заданого пользователем количества рандомных чисел. На основе созданой функции распечатать таблицу этих чисел и их двоично-десятичных кодов. Минимизировать использование библиотечных функций, нельзя использовать динамическую память, векторы и т.п., только массивы и символьные строки. Написала черновой вариант, пока не работает. Помогите(

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctime>

#define MAX 10

int Enter(void);
void Generate(int);
void DecToBin(int);

int arr[MAX];
char str[MAX][100];

void main(void)
{
    int size;
    size = Enter();
    Generate(size);
    DecToBin(size);
    getchar(); getchar();
}

int Enter(void)
{
    system("chcp 1251");
    int n; // розмір масиву
    printf_s("Введіть кількість елементів масиву\n");
    scanf_s("%d", &n);
    return n;
}

void Generate(int k)
{
    int i;
    srand(time(NULL));
    for (i = 0; i < k; i++) {
        arr[i] = rand();
        printf("%d ", arr[i]);
    }
}

void DecToBin(int k)
{
    int i, j, m = 0;
    int a, b = 1;
    int ost;
    for (i = 0; i < k; i++) {
        for (j = 0; b > 0; j++) {
            a = arr[i] % 10;
            b = arr[i] / 10;
            int p = 0;
            for (m; p < 4; m++) {
                ost = a % 2;
                str[i][m] = ost;
                a = a / 2;
                p++;
            }
            m = 5 + (5 * j);
            str[i][m - 1] = ' ';
        }
    }

}

Ответы (1 шт):

Автор решения: MBo

Сначала же (в правой позиции строки) получается младший бит, поэтому

     for (m = 3; m >=0; m--) {
            ost = a % 2;
            str[i][m] = ost;
            a = a / 2;
        }

кроме того, перед внутренним циклом

b = arr[i]

а в нём

  a = b % 10;
  b = b / 10;
→ Ссылка