Nel tuo codice controlli la stessa condizione 3 volte, in sostanza.
Uno dei modi più compatti per scriverlo con un while è questo (assumendo che tutti i caratteri in input siano presenti nella tabella):
oppure (senza assumere che tutti i caratteri in input siano presenti nella tabella)codice:int i = 0; while(tab[i][2]!=c) ++i; fputc(tab[i][1], f2);
Tuttavia c'è un modo assai più efficiente, una hashtable.codice:int i = 0; while((tab[i][2]!=c) && (i<TAB_LENGTH)) ++i; if(i!=TAB_LENGTH) fputc(tab[i][1], f2);
Nel caso dei caratteri è piuttosto semplice in quanto ogni carattere è in sostanza un numero e basta trasformare questo numero in un indice per la tua tabella.
Per farlo bisogna però conoscere i caratteri interessati.