#include <stdio.h>
#include <stdlib.h>
char* addBinary(char* a, char* b) {
if (!strlen(a))
return b;
if (!strlen(b))
return a;
printf("a: %d\n", strlen(a));
printf("b: %d\n", strlen(b));
char* m;
char* n;
char* result;
if (strlen(a) > strlen(b)){
m = (char*)malloc(sizeof(char)*(strlen(a)+1));
n = (char*)malloc(sizeof(char)*(strlen(a)+1));
result = (char*)malloc(sizeof(char)*(sizeof(a)+1));
memset(m, sizeof(m), '\0');
memset(n, sizeof(n), '0');
memset(result, sizeof(result), '\0');
strcpy(m, a);
strcpy(n+strlen(a)-strlen(b), b);
}
else{
m = (char*)malloc(sizeof(char)*(strlen(b)+1));
result = (char*)malloc(sizeof(char)*(strlen(b)+2));
n = (char*)malloc(sizeof(char)*(strlen(b)+1));
memset(m, sizeof(m), '\0');
memset(n, sizeof(n), '0');
memset(result, sizeof(result), '\0');
printf("result: %d\n", sizeof(result));
strcpy(m, b);
strcpy(n+strlen(b)-strlen(a), a);
}
int flag = 0;
int i;
for (i = strlen(m)-1; i > -1 ; i--){
if (m[i] + n[i] + flag == '0' * 2 + 3){
result[i+1] == '1';
flag = 1;
}
else if (m[i] + n[i] + flag == '0' * 2 + 2){
result[i+1] = '0';
flag = 1;
}
else if (m[i] + n[i] + flag == '0' * 2 + 1){
result[i+1] = '1';
flag = 0;
}
else{
result[i+1] = '0';
flag = 0;
}
}
if (flag){
result[0] = '1';
return result;
}
return result+1;
}
int main()
{
int i;
i = strlen(addBinary("1", "0"));
printf("%d", i);
}