Функция, которая формирует строку из 2-10 кода числа
Я создала массив строк, в который записываю двоично-десятичный код чисел из другого массива. Но в результате выводится пустая строка, не понимаю, где ошибка:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctime>
#define MAX 10
int Enter(void);
void Generate(int);
void DecToBin(int);
void Print(int);
int arr[MAX];
char str[MAX][100];
void main(void)
{
int size;
size = Enter();
Generate(size);
DecToBin(size);
Print(size);
getchar(); getchar();
}
int Enter(void)
{
system("chcp 1251");
int n; // розмір масиву
printf_s(" Введіть кількість елементів масиву: ");
scanf_s("%d", &n);
return n;
}
void Generate(int k)
{
int i;
srand(time(NULL));
printf(" Масив випадкових чисел: ");
for (i = 0; i < k; i++) {
arr[i] = rand() + 1;
printf("%d ", arr[i]);
}
}
void DecToBin(int k)
{
int i, j, m = 0;
int a = 0, b = 0;
int ost;
for (i = 0; i < k; i++) {
b = arr[i];
for (j = 0; b > 0; j++) {
a = b % 10;
b = b / 10;
int p = 0;
for (m; p < 4; m++) {
ost = a % 2;
str[i][m] = ost;
a = a / 2;
p++;
}
str[i][m + 1] = ' ';
m++;
}
str[i][m] = '\0';
char* l = &str[i][0];
char* r = &str[i][m - 1];
for (; l < r; l++, r--) {
char t = *l;
*l = *r;
*r = t;
}
printf("\n %s", str[i]);
m = 0;
}
}
void Print(int k)
{
int i;
printf("\n\n\t Таблиця чисел та їх 2-10 кодів");
printf("\n ------------------------------------------------------");
printf("\n | Число | ");
printf(" 2-10 код |");
for (i = 0; i < k; i++) { // виводимо таблицю
printf("\n ------------------------------------------------------");
printf("\n | %-6d |", arr[i]);
printf(" %-25.2s |", str[i]);
}
printf("\n ------------------------------------------------------");
}