#include "stdio.h"
#include "string.h"
void add_big(char* bg1,char* bg2)
{int lb1 = strlen(bg1);
int lb2 = strlen(bg2);
char *bg ;
int l = lb1>lb2?(lb1+1):(lb2+1);
if(lb1 > lb2)
{
bg = new char[lb1+1];
memset(bg,'0',lb1+1 );
memcpy((bg+lb1-lb2 ),bg2,lb2);
bg[lb1]='\0';
bg2 = bg;
}
else if(lb1 < lb2)
{
bg = new char[lb2+1];
memset(bg,'0',lb2+1 );
memcpy((bg+lb2-lb1 ),bg1,lb1);
bg[lb2]='\0';
bg1 = bg;
}
char *Result = new char [l];
Result[l] = '\0';
//char carry[2] = {0};
int carry = 0;
int pos = 1;
while(pos != l)
{
if((*(bg1 + l-1 -pos) - '0' + *(bg2 + l-1- pos) - '0' + carry) > 9)
{
Result[l-pos] = ((*(bg1 + l-1 -pos) + *(bg2 + l-1- pos) + carry) - 10) - '0';
carry = 1;
pos++;
}
else
{
Result[l-pos] = *(bg1 + l-1 -pos) + *(bg2 + l-1 - pos) + carry - '0';
carry = 0;
pos++;
}
}
if(carry>0)
{Result[0] = carry + '0'; }
else
{Result[0] = '0'; }
printf("Sum::: = %s\n", Result + (*Result == '0'));
}
int main()
{
char test_str1[] = "99999999999999999999999999";
char test_str2[] = "99999999999999999999999999";
add_big(test_str1,test_str2);
return 0;
}