Ce n'est pas nécessaire d'utiliser atoi pour une chaine ascii.
Tu peux directement, à même la chaine, convertir en int sans utiliser un autre tableau.
Suffit de soustraire 0x30 je crois (le caractère '0')
char tmp[] = "54236", *c = tmp;
while(*c) {
*c -= '0';
c++;
}
Le 0 de fin de chaine sera toujours présent mais il suffit de ne pas le compter (taille du tableau - 1)
C++ (@++)