Piuttosto di usare atoi utilizza
strtol.
In ogni caso se i numeri sono sempre nelle stesse posizioni puoi limitarti a quello che ti ho scritto sopra, tenendo conto, nel caso di numeri con più di una cirfa, le potenze.
Resta il fatto che anche il tuo approccio, di dividere la stringa in sottostringhe, è valido.