Alors plusieurs petites remarques :
int atoi(char *n);
tu n'as pas mis de nom variables, donc il ne doit pas compilé. De plus en C, il faut savoir que les variables sont toujours à déclarer au tout début de la fonction. Les nouveaux compilo acceptent, mais dans la norme, c'est mieux de les déclarer et de les itinitialiser avant toute chose.
Ensuite tu déclares 2 fois la variable "int ret", donc po possible, pas 2 variables dans une fonction qui portent le même nom.
sinon je trouve ton code très lisible et propre ! j'aime bien le
#define p 512
char commande [p] ;


