Infatti ... e' inutile indicare se e' urgente o no ... questo non e' un pronto soccorso ...

In ogni caso, nel tuo codice vedo un paio di errori ...

Quando separi le 3 parti della stringa iniziale ti aspetti che anche l'ultima parte sia conclusa da uno spazio e questo puo' non essere vero (anzi, in genere non lo e' perche' si inserisce

XXX 10 12

e dopo il 12 si pressa invio, non spazio ...).

Inoltre, non consideri il carattere terminatore delle 3 stringhe cosi' che nessuna di essa e' terminata regolarmente con il carattare null. Per questo motivo la strcpy e le atof possono comportarsi in maniera anomala "sporcando" parti di memoria del processo ... insomma, sistema questi problemi prima di tutto ...