La fgetc restituisce un int solo per poter avere i caratteri letti nel range 0-255 e poter restituire -1 in caso errore.
Per avere il carattere in formato char è sufficiente un cast.
Per quanto riguarda il resto, potresti prendere spunto dall'algoritmo di trasformazione in base64, che più o meno fa quello che ti serve.codice:char c=0; int charcode = fgetc(fp); if (charcode != -1) { c = (char) charcode; }
http://it.wikipedia.org/wiki/Base64