Prova così.codice:#include <stdio.h> void function(char dir,int displacement); int nextToken(char* string,char* dir,int* disp,int* curPos); int main() { char string[] = "W124S345W1"; char direction; int displacement,currentPosition = 0 ; while(nextToken(string,&direction,&displacement,¤tPosition)) function(direction,displacement); system("PAUSE"); return 0; } int nextToken(char* string,char* dir,int* disp,int* curPos) { int i,count; char *buf; *disp = 0; //valore non valido di curPos if(*curPos < 0) return 0; //estrae il carattere if(isalpha(string[*curPos])) { *dir = (char)string[*curPos] ; (*curPos)++; } else return 0; //conta le cifre del token corrente for(count = 0;string[*curPos] != '\0' && isdigit(string[*curPos]);(*curPos)++,count++); //salva i caratteri numerici del token in un buffer //e poi converte il tutto in intero.Occhio all'overflow // se vuoi scrivere numeri molto grandi usa i double invece // degli int buf = (char*)malloc(count+1); strncpy(buf,string + (*curPos) - count,count); *disp = atoi(buf); return 1; } void function(char dir,int displacement) { printf("%c%d\n",dir,displacement); }