Originariamente inviato da robyp
[...]
Perchè se digito 40 in numero mi stampa 400, nonostante inizio->percorso[i]).Ho notato che nel while mi cicla una volta in più di quello che serve.percorso[i] è un singolo carattere!
Grazie
Perchè non incrementi il contatore i. Quando hai 40 il puntatore legge per primo il 4, poi fai atoi(40N50W) e ti trova 40, ma al ciclo successivo legge 0 quindi rifa atoi(0N50W) che è uguale a 0.
Aggiungi questo while, così dovrebbe andare:
codice:
for(i=0;(inizio->percorso[i])!='\0'; ){
numero=0;
while((inizio->percorso[i]!='N')&&
(inizio->percorso[i]!='S')&&
(inizio->percorso[i]!='W')&&
(inizio->percorso[i]!='E')){
numero=numero*10+atoi(&(inizio->percorso[i]));
printf("atoi:%i %i\n",i,numero);
i++;
while((percorso[i]!='N')&&
(percorso[i]!='S')&&
(percorso[i]!='W')&&
(percorso[i]!='E'))i++;
}//end while
if (inizio->percorso[i]=='N'){y=y+numero;}//se vado a nord incremento y
if (inizio->percorso[i]=='S'){y=y-numero;}//sud decremento
if (inizio->percorso[i]=='E'){x=x+numero;}//est incremento x
if (inizio->percorso[i]=='W'){x=x-numero;}//ovest decremento x
i++;
}//end for