Ciao a tutti, devo scrivere un programma che converta un numero da una base ad un altra. Dato un file di input file1.txt contenente per ogni riga base di partenza base di arrivo numero (il file è costituito da N righe), scrivere in un file di output output.txt contenente, per ogni riga, ogni numero convertito nella base richiesta.
Ad esempio: se nel file di input c'è, nella prima riga, 10 2 20
nel file di output, nella prima riga, deve esserci 10100

Io ho scritto questo codice, ma non funziona per tutte le basi (solo decimale-->binario). Potreste darmi una mano?
Grazie in anticipo.

codice:
#include<stdio.h>
#include<stdlib.h>
#define MAX 10


void elaborazione()
{
    int b1, b2, n1, i;
    char n2[MAX];
    FILE *fp1, *fp2;
    i=1;
    if ((fp1=fopen("file1.txt", "r"))!=NULL && (fp2=fopen("file2.txt", "w"))!=NULL)
    {
        fscanf(fp1, "%d %d %d", &b1, &b2, &n1);
        while(!feof(fp1))
        {
            if(b2==1)
                itoa(n1, n2, 1);
            else if (b2==2)
                itoa(n1, n2, 2);
            else if (b2==3)
                itoa(n1, n2, 3);
            else if (b2==4)
                itoa(n1, n2, 4);
            else if (b2==5)
                itoa(n1, n2, 5);
            else if (b2==6)
                itoa(n1, n2, 6);
            else if (b2==7)
                itoa(n1, n2, 7);
            else if (b2==8)
                itoa(n1, n2, 8);
            else if (b2==9)
                itoa(n1, n2, 9);
            else if (b2==10)
                itoa(n1, n2, 10);
            fprintf(fp2, "%s\n", n2);
            fscanf(fp1, "%d %d %d", &b1, &b2, &n1);
        }
        fclose(fp1);
        fclose(fp2);
    }
    else printf ("Error finding the file.\n");
}


int main ()
{
    elaborazione();
}