• anton@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    7
    ·
    1 day 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]));
    }