when i call my multi() it will calculate the binary number just fine, but won't calculate the adding(). If i switch the two in order, it will calculate the adding() and not calculate the multi(). Is there a reason why the second function call isn't displaying its value? It will print the printf, but not the value. Any help would be great.
#include <stdio.h>
long binary1, binary2, binary3, binary4, multiply = 0;
int binaryproduct(int, int);
int digit, factor = 1;
int multi();
int adding();
int main()
{
    binary3 = binary1;
    binary4 = binary1;
    printf("Enter the first binary number: ");
    scanf("%ld", &binary1);
    printf("Enter the second binary number: ");
    scanf("%ld", &binary2);
    multi();   
    printf("\n");
    adding();
}
int adding()
{
    int i = 0, remainder = 0, sum[20];
    while (binary3 != 0 || binary4 != 0) {
        sum[i++] =(binary3 % 10 + binary4 % 10 + remainder) % 2;
        remainder =(binary3 % 10 + binary4 % 10 + remainder) / 2;
        binary1 = binary3 / 10;
        binary2 = binary4 / 10;
    }
    if (remainder != 0) {
        sum[i++] = remainder;
    }
    --i;
    printf("Sum of two binary numbers: ");
    while (i >= 0) {
        printf("%d", sum[i--]);
    }
    return 0;
}
int multi()
{
    while (binary2 != 0) {
        digit =  binary2 % 10;
        if (digit == 1) {
            binary1 = binary1 * factor;
            multiply = binaryproduct(binary1, multiply);
        } else {
            binary1 = binary1 * factor;
        }
        binary2 = binary2 / 10;
        factor = 10;
    }
    printf("Product of two binary numbers: %ld", multiply);
    return 0;
}
int binaryproduct(int binary3, int binary4)
{
    int i = 0, remainder = 0, sum[20];
    int binaryprod = 0;
    while (binary1 != 0 || binary2 != 0) {
        sum[i++] =(binary1 % 10 + binary2 % 10 + remainder) % 2;
        remainder =(binary1 % 10 + binary2 % 10 + remainder) / 2;
        binary1 = binary1 / 10;
        binary2 = binary2 / 10;
    }
    if (remainder != 0) {
        sum[i++] = remainder;
    }
    --i;
    while (i >= 0) {
        binaryprod = binaryprod * 10 + sum[i--];
    }
    return binaryprod;
}
 
     
    