• anton@lemmy.blahaj.zone
      link
      fedilink
      English
      arrow-up
      6
      ·
      21 hours ago
      #include <stdbool.h>
      #include <stdio.h>
      #include <stdlib.h>
      
      char* addStrings(char* as, char*bs){
              int aL=strlen(as);
              int bL=strlen(bs);
              if (aL<bL){
                      char* temp=bs;
                      int tL=bL;
                      bs=as;
                      bL=aL;
                      as=temp;
                      aL=tL;
              }
              char* cs = malloc(aL+2);
              cs[aL+1]='\0';
              bool carry = false;
              int bi=bL-1;
              for(int ai=aL-1; ai>=0; ai--,bi--){
                      char a=as[ai];
                      char b='0';
                      if(bi>=0)b=bs[bi];
                      char c=a+b-'0';
                      if(carry)c++;
                      carry=c>'9';
                      if(carry)c-=10;
                      cs[ai+1]=c;
              }
              if(carry) cs[0]='1';
              else cs[0]='0';
              return cs;
      }
      
      int main(int argc, char**args){
              printf("%s + %s = %s\n", args[1] , args[2] , addStrings(args[1] , args[2]));
      }