Perchè usi due volte la getc:
E ti dimentichi di scrivere il terminatore.codice:while(getc(f) !=EOF){ ch=getc(f); // legge nuovamente un altro carattere s[i]=ch; i++; }
Correggendo:
PS: Indenta meglio il codice.codice:while(getc(f) !=EOF){ s[i]=ch; i++; } s[i]=0;