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;
}