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