#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* strrev(char* str) {
char *p1, *p2;
if (!str || !*str)
return str;
for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2) {
*p1 ^= *p2;
*p2 ^= *p1;
*p1 ^= *p2;
}
return str;
}
void toBinary(int number, char binaryNumber[]) {
int i = 0;
while (number != 0) {
binaryNumber[i] = (number % 2) + '0';
i++;
number /= 2;
}
strrev(binaryNumber);
}
void addBinaryStrings(char* a, char* b, char binaryNumber[]) {
int num1 = strtol(a, NULL, 2);
int num2 = strtol(b, NULL, 2);
int sum = num1 + num2;
toBinary(sum , binaryNumber);
}
int main() {
char* a = "11";
char* b = "1";
char binaryNumber[16] = {'\0'};
addBinaryStrings(a, b, binaryNumber);
printf("%s\n", binaryNumber);
a = "1010";
b = "1011";
addBinaryStrings(a, b, binaryNumber);
printf("%s\n", binaryNumber);
return 0;
}
/*
run:
100
10101
*/