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 ...