1. #include <stdio.h>
    2. #include <string.h>
    3. #define N 500
    4. void BigNumAdd(char *n1, char *n2){
    5. char result[N], *p1, *p2, *p3 = result, temp;
    6. int n = 0, rn1, rn2, i;
    7. //p1、p2分别指向n1、n2的个位数
    8. p1 = n1+(strlen(n1)-1)*sizeof(char);
    9. p2 = n2+(strlen(n2)-1)*sizeof(char);
    10. while (p1 >= n1 || p2 >= n2){
    11. //获取真实数值
    12. rn1 = p1 >= n1 ? *p1-'0' : 0;
    13. rn2 = p2 >= n2 ? *p2-'0' : 0;
    14. //保留个位
    15. *p3 = (rn1+rn2+n) % 10 + '0';
    16. n = (rn1+rn2+n) >= 10 ? 1 : 0;
    17. p1--;
    18. p2--;
    19. p3++;
    20. }
    21. if(n){
    22. *p3 = '1';
    23. p3++;
    24. }
    25. *p3 = '\0';
    26. for(i = 0; i < strlen(result) / 2; i++){
    27. temp = result[i];
    28. result[i] = result[strlen(result)-i-1];
    29. result[strlen(result)-i-1] = temp;
    30. }
    31. printf("%s\n", result);
    32. }
    33. int main(int argc, char *argv[]) {
    34. BigNumAdd("12311", "100211");
    35. return 0;
    36. }