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