Я пытался изменить ваше решение с минимальными изменениями, чтобы оно работало.Существуют элегантные решения для преобразования Integer в двоичные, например, с помощью операторов сдвига.
Одной из основных проблем в коде было использование символа вместо массива символов.т.е. char str;
вместо char str[SIZE];
Также вы выполняли строковые операции над одним символом.Кроме того, заголовочный файл iostream предназначен для C ++.
Существует много улучшений в решении, опубликованном ниже (я только заставил ваш код работать с минимальными изменениями).
Я предлагаю укрепить ваши основы языка Си и снова подойти к этой проблеме.
#include <stdio.h>
#include <string.h>
void converttobinary(int n, char *op)
{
int i;
int a[8];
for (i = 0; i < 8; i++)
{
a[i] = n % 2;
n = (n - a[i]) / 2;
}
for (i = 7; i >= 0; i--)
{
op[i]=a[i];
}
}
int main()
{
int n,i;
char str[8];
n = 8;
converttobinary(n,str);
for (i = 7; i >= 0; i--)
{
printf(" %d ",str[i]);
}
return 0;
}