#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void big_num_sub(char *s1,char *s2)
{
int len1 = strlen(s1);
int len2 = strlen(s2);
strrev(s1);
strrev(s2);
char *rs = (char *)malloc(sizeof(char) * ((len1>len2?len1:len2)+1));
if (rs == NULL)
{
exit(-1);
}
char *p = rs;
int tmp = 0;
int bit = 0;
while(*s1 != 0 && *s2 != 0)
{
tmp = (*s1-'0') - (*s2-'0') - bit;
if (tmp<0)
{
bit = 1;
tmp = tmp+10;
}
else
{
bit = 0;
}
*p = tmp+'0';
p++;
s1++;
s2++;
}
if (*s1 != '\0')
{
while(*s1 != 0)
{
tmp = *s1-'0'-bit;
if (tmp<0)
{
bit = 1;
tmp = tmp+10;
}
else
{
bit = 0;
}
*p = tmp+'0';
p++;
s1++;
}
}
else if(*s2 != '\0')
{
while(*s2 != 0)
{ tmp = *s2-'0' - bit;
if (tmp <10)
{
bit = 1;
tmp = tmp +10;
}
else
{
bit = 0;
}
*p = tmp+'0';
p++;
s2++;
}
}
*p = 0;
strrev(rs);
printf("add = %s\n",rs);
free(rs);
}
int main()
{
char p[]="123456789";
char s[]="111111111";
big_num_sub(p,s);
return 0;
}