In genere si fa una sola domanda per thread in un forum ...
Comunque, molto velocemente ...
il primo problema e' determinato dal fatto che usi l'operatore OR (||) ma dovresti usare l'AND (&&) nella condizione della while ...
il codice della open dovrebbe andare ... l'hai provato?
mentre l'ultimo non va ... usa la funzione strrev ...