大きい整数文字列の加算


#include 
#include 

char *reverse(char *str)
{
    int i, j;
    for (i = 0, j = strlen(str) - 1; i = 0 || j >= 0; --i, --j, ++k) 
	{
		int a1, a2, sum;
		a1 = (i >= 0 ? (add1[i] - '0') : 0);
		a2 = (j >= 0 ? (add2[j] - '0') : 0);
		sum = carry + a1 + a2;
		result[k] = (char)(0xff & (sum % 10 + '0'));
		carry = sum / 10;
	}
	if (carry) {
		result[k++] = carry + '0';
	}
	result[k] = '\0';
	return reverse(result);
}

int main()
{
	char add1[256];
	char add2[256];
	char result[260];
	scanf("%s", add1);
	scanf("%s", add2);
	printf("%s
", strsum(add1, add2, result)); return 0; }