Pengurangan bilangan bulat positif (Bilangan besar)

Setiap tipe data dasar dibatasi ukurannya. kita tidak bisa menyimpan angka yang melebihi batas maksimal suatu tipe data. Tapi data berupa angka tetap bisa disimpan dalam string. Walaupun begitu, string ataupun array tidak dapat digunakan dalam operasi aritmatika seperti halnya tipe data bilangan bulat atau tipe data pecahan.

Sebagai solusinya, kita bisa membuat algoritma atau fungsi untuk melakukan operasi aritmatika dengan string atau array. Sebelumnya sudah membahas tentang penjumlahan bilangan besar. Kali ini saya akan memberi contoh kode program pengurangan dengan bilangan besar.
#include <stdio.h>
#include <string.h>

char negatif=0;
int singkirkan_nol(char* a){
int i, j;
    j=0;
    while(a[j]=='0'){
        a[j]='x';
        j++;
    }
    i=0;
    while(a[j]!=0){
        a[i]=a[j];
        j++;
        i++;
    }
    a[i]=0;

    return 0;
}

int tambahkan_nol(char* a, int panjang1, int panjang2){
int i, j, selisih;
    selisih=panjang2-panjang1;
    i=panjang2-1;
    j=panjang1-1;
    while(i>=selisih){
        a[i]=a[j];
        j--;
        i--;
    }
    i=0;
    while(i<selisih){
        a[i]='0';
        i++;
    }
    a[panjang2]=0;
    return 0;
}

int mulai_pengurangan(char *a, char *b, char *c, int panjang){
int i;
char ckurang, tambahan;
    i=panjang-1;
    ckurang=0;
    while(i>=0){ 
        if(a[i]<b[i]){
            tambahan=10;
        }else{
            tambahan=0;
        }

        c[i]='0'+a[i]-b[i]-ckurang+tambahan;
        if(a[i]<b[i]){
            ckurang=1;
        }else{
            ckurang=0;
        } 
        i--; 
    } 
    c[panjang]=0;

    return 0;
}

int pengurangan(char* a, char* b, char *hasil){
int i, j, panjang;
   i=strlen(a); 
   j=strlen(b);
   if(i<j){
       tambahkan_nol(a, i, j);
       panjang=j;
   }else{
       tambahkan_nol(b, j, i);
       panjang=i;
   }
   if(strcmp(a,b) == 1){
         mulai_pengurangan(a, b, hasil, panjang);
         negatif=0;
     }else{
         mulai_pengurangan(b, a, hasil, panjang);
         negatif='-';
     }

     singkirkan_nol(hasil);

     if(hasil[0]==0){
         hasil[0]='0';
         hasil[1]=0;
     }
     return 0;
}

int main(){
char a[100], b[100], hasil[101];
     printf("bilangan ke-1 : ");scanf("%s", a);
     printf("bilangan ke-2 : ");scanf("%s", b);
     pengurangan(a, b, hasil);
     printf("Hasil : %c%s\n", negatif, hasil);
     return 0;
}