Convertir une chaîne en entier sans utiliser atoi

Comment convertir une chaîne en entier sans utiliser atoi à partir des arguments donnés? Voici ce que j’ai essayé:

int main(int argc, char *argv[]){ for(int i = 1; i < argc; i++){ const char *p = argv[i]; int j = 0; while(isdigit(*p)){ j = j * 10 + *p - '0'; p++; printf("%d\n", j); } } } 

Pour une raison quelconque, il se sépare et les rajoute à nouveau.

 $ ./a.out 55 6 50 66 5 55 6 5 50 6 66 

Vous imprimez tous les résultats intermédiaires. Enregistrez l’impression jusqu’à ce que vous ayez terminé la boucle while.

 while(isdigit(*p)){ j = j * 10 + *p - '0'; p++; } printf("%d\n", j); 
 #include #include using namespace std; int main() { //char name[1000]; //cin>>name; char name[]="123456"; int data, result, output,Base; //volatile int Base; //int Base; data=1; result=0; Base=strlen(name); while (Base>= 1) { Base--; output=toascii(name[Base])-48; output=output*data; result= result+output; data=data*10; } std::cout<<"this is the string you enterd"<