fork download
  1. char* addStrings(char* num1, char* num2) {
  2. int carry = 0, temp, off_0 = '0', len1 = strlen(num1), len2 = strlen(num2), lensum = ((len1>len2)?len1:len2) + 1;
  3. char* sum = malloc(sizeof(char)*(lensum+1));
  4.  
  5. sum[lensum--]='\0';
  6. while(len1 > 0 || len2 > 0){
  7. len1--;
  8. len2--;
  9. temp = carry;
  10. if(len1 >= 0)
  11. temp += num1[len1] - off_0;
  12. if(len2 >= 0)
  13. temp += num2[len2] - off_0;
  14. carry = temp/10;
  15. sum[lensum--] = off_0 + temp%10;
  16. }
  17.  
  18. if(carry > 0)
  19. sum[lensum] = off_0 + carry;
  20.  
  21. if(sum[0] == '\0'){
  22. sum[0] = sum[1];
  23. for(int i = 1; sum[i] != '\0'; i++){
  24. sum[i] = sum[i+1];
  25. }
  26. }
  27.  
  28. return sum;
  29. }
  30.  
  31. int main(void) {
  32. char* s = addStrings("61480723987857250303867015585644902996295272","17149437458129895288707346085");
  33. printf("Sum is %s", s);
  34. return 0;
  35. }
  36.  
Success #stdin #stdout 0s 10320KB
stdin
Standard input is empty
stdout
Sum is 61480723987857267453304473715540191703641357