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);
}
Prova così.