Fossi in te non leggerei un carattere alla volta con la fread, ma un blocco di byte abbastanza grande, ponendoli in un buffer in memoria, per elaborarli piu' velocemente.

Vedrai che la velocita' del programma (non script, programma) aumentera' notevolmente ...