Scusate, non potrebbe essere così qualcosa tipo:
- ch è variabile globale e quindi viene ripetutamente sovrascritta
- parte il main che richiama reverse_line()
- viene letta p quindi ch vale "p": non è ctrl+z quindi viene richiamata reverse_line()
- viene letta a quindi ch vale "a": non è ctrl+z quindi viene richiamata reverse_line()
- viene letta l quindi ch vale "l": non è ctrl+z quindi viene richiamata reverse_line()
- viene letta l quindi ch vale "l": non è ctrl+z quindi viene richiamata reverse_line()
- viene letta a quindi ch vale "a": non è ctrl+z quindi viene richiamata reverse_line()
- viene inserito ctrl+z quindi ch resta "a" e la prima reverse_line() termina
- la "precedente reverse_line()" (quella che aveva letto a) stampa ch (cioè "a") e un a capo
- la "precedente reverse_line()" (quella che aveva letto l) stampa ch (cioè "a") e un a capo
- la "precedente reverse_line()" (quella che aveva letto l) stampa ch (cioè "a") e un a capo
- la "precedente reverse_line()" (quella che aveva letto a) stampa ch (cioè "a") e un a capo
- la "precedente reverse_line()" (quella che aveva letto p) stampa ch (cioè "a") e un a capo
...? Solo che mi sarei aspettata venissero letti anche gli invio quindi mi sa che manca ancora qualcosa....
EDIT: rileggendo meglio gli ultimi post: la parola viene messa subito per intera, quindi probabilmente la sequenza finale serve solo epr fargli leggere prima la parola e poi il ctrl+z...?