Quando eseguo questo programma, esce la scritta: "nome.exe ha smesso di funzionare". Non riesco a capire il motivo. Sapreste darmi una mano?
Grazie in anticipo.

codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int convertitoreBase10(long int numero_da_convertire, int base)
{
   char base_digits[16]={'0', '1', '2', '3', '4', '5', '6', '7','8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};


   int numero_convertito[64];
   int num, indice, i;


   num=indice=0;


   while (numero_da_convertire!=0)
   {
     numero_convertito[indice]=numero_da_convertire%base;
     numero_da_convertire=numero_da_convertire/base;
     ++indice;
   }


   for(i=indice; i>=0; i--)
   num=num+base_digits[numero_convertito[indice]]*pow(10, i);


   return num;
}


int convertitoreBaseB(long int numero_da_convertire, int base)
{
    int r, a[100], i, j, numero;


    while(numero_da_convertire>0)
    {
        i++;
        r=numero_da_convertire%10;
        numero_da_convertire=numero_da_convertire/10;
        a[i]=r;
    }


    numero=0;
    for(j=i; j>=0; j--)
        numero=numero+pow(base, j);


    return numero;
}


int main()
{
    int b1, b2, i;
    long int n, nsp;
    FILE *fp1, *fp2;
    fp1=fopen("file1.txt", "r");
    fp2=fopen("file2.txt", "w");
    if (fp1!=NULL && fp2!=NULL)
    {
        fscanf(fp1, "%d %d %d", &b1, &b2, &n);
        while(!feof(fp1))
        {
            if(b1==10)
                fprintf(fp2, "%d\n", convertitoreBase10(n, b2));
            else if(b2==10)
                fprintf(fp2, "%d\n", convertitoreBaseB(n, b1));
            else if(b1!=10 && b2!=10)
            {
                nsp=convertitoreBaseB(n, b1);
                fprintf(fp2, "%d\n", convertitoreBase10(nsp, b2));
            }
            fscanf(fp1, "%d %d %d", &b1, &b2, &n);
        }
        fclose(fp1);
        fclose(fp2);
    }
    else printf ("Non ho trovato il file.\n");
}