I am trying to write a program that adds any pair of binary numbers up to 31 digits correctly.

I am having a very difficult time with this. I can't figure out how to let it accept 31 digits, how to add two numbers that are not the same amount of digits like 1001 and 101, and I can't get it to work with getch().

Any help would be great!

Code:

#include<stdio.h>
#include<curses.h>
int main()
{
int a[8],b[8],c[9], carry=0;
int i,j;
//int sum;
printf("Enter the First Eight bit number: ");
for(i=0;i<8;i++)
{
scanf("%d",&a[i]);
}
printf("\nEnter the Second Eight bit number: ");
for(i=0;i<8;i++)
{
scanf("%d",&b[i]);
}
j=8;
for(i=7;i>=0;i--)
{
if (a[i]==1 && b[i]==1 && carry ==1)
{
c[j] = 1;
carry =1;
}
else if (a[i]==1 && b[i]==1 && carry ==0)
{
c[j]=0;
carry=1;
}
else if (a[i]==0 && b[i]==1 && carry ==0)
{
c[j]=1;
carry=0;
}
else if (a[i]==0 && b[i]==1 && carry ==1)
{
c[j]=0;
carry=1;
}
else if (a[i]==1 && b[i]==0 && carry ==1)
{
c[j]=0;
carry=1;
}
else if (a[i]==1 && b[i]==0 && carry ==0)
{
c[j]=1;
carry=0;
}
else if (a[i]==0 && b[i]==0 && carry ==1)
{
c[j]=1;
carry=0;
}
else if (a[i]==0 && b[i]==0 && carry ==0)
{
c[j]=0;
carry=0;
}
j--;
}
c[0] = carry;
printf("\nthe sum of the two binary number is: ");
for(j=0;j<=8;j++)
{
printf("%d",c[j]);
}
getch();
return 0;
}