un ultima cosa..
spero non vada troppo OT cmq:

while (!feof(file_chiaro))
{
...
...
}

così dovrebbe svolgere le istruzioni fino a che non viene raggiunta la fine del file.

solo ora mi sono accorto che stampa un carattere in più.

es:
se nel file_chiaro c'è scritto ciao
e
se alla c corrisponde i
se alla i corrisponde t
se alla a corrisponde r
se alla o corrisponde p

dovrebbe stamparmi a video
itrp
invece stampa
itrpp

ho provato a mettere un if ( c != EOF )
prima delle due printf
ma niente!
non riesco a capire perchè!