11. september 2006 - 15:11Der er
5 kommentarer og 1 løsning
strtok - kan det tælles hvor mange token tegn der fjernes
Jeg benytter følgende kode:
const int MAX_LENGT = 100;
char LineInMem[] = ".00,,,,,,.000,1.23,exit"; char* token; char* ArrayOfValues[MAX_LENGTH]; int i = 0; char seps[] = ",";
token = strtok( LineInMem, seps ); while( token != NULL ) { /* While there are tokens in "string" */ ArrayOfValues[i] = token; i++; /* Get next token: */ token = strtok( NULL, seps ); }
Det er også meget fint i min ArrayOfValues får jeg noget det ligner: [0]= ".00" [1] = ".000" [2] = "1.23" [3] = "exit". Men 1000$ spørgsmålet er kan jeg på nogen måde se hvor mange "," (kommaer) der er blvet sprunget over før jeg fik en ny værdi i mit token? I dette tilfælde 5 overspringninger.
Da strtok() kun returnerer en pointer, og den pointer ikke kan være NULL når den ikke er færdig med strengen, så vil jeg antage at det er en umulighed. Hvis det er nødvendigt at kende positionen af dit token, så skal du nok skrive din egen parser. Evt. ved hjælp af Lex hvis du har nogle mere avancerede formater også :).
OK - hvis du ikke vil have dem så tager jeg dem selv igen...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.