Template:
void AddBigUint(const char *pA, const char *pB, char *pSum) {
int lenA = strlen(pA);
int lenB = strlen(pB);
int lenSum = 0;
int lenBig = lenA > lenB ? lenA : lenB;
char tmpA[DATA_SIZE] = {'\0'}, tmpB[DATA_SIZE] = {'\0'};
for (int i = 0 ; i < lenA ; ++i) {
tmpA[i] = pA[lenA - i - 1] - '0';
}
for (int i = 0 ; i < lenB ; ++i) {
tmpB[i] = pB[lenB - i - 1] - '0';
}
memset(pSum, 0, sizeof(char) * (lenBig + 1));
for (int i = 0 ; i < lenBig ; ++i, ++lenSum) {
pSum[lenSum] += tmpA[i] + tmpB[i];
if (pSum[lenSum] >= 10) {
pSum[lenSum + 1] += 1;
pSum[lenSum] -= 10;
}
}
if (pSum[lenSum] != 0) {
lenSum++;
}
int lenHalf = lenSum >> 1;
for (int i = 0 ; i < lenHalf ; ++i) {
char buf = pSum[i];
pSum[i] = pSum[lenSum - i - 1];
pSum[lenSum - i - 1] = buf;
}
for (int i = 0 ; i < lenSum ; ++i) {
pSum[i] += '0';
}
pSum[lenSum] = '\0';
}