strtoken funktion

Gast #2927953
Lesenswert?

Hallo,

ich möchte ein string aufteilen und benutze folgende funktion:
1
int strtoken(char *str, char *separator, char *token[])
2
{
3
  int i = 0;
4

5
  token[0] = strtok(str, separator);
6

7
  while ( token[i])
8
  {
9
    i++;
10
    token[i] = strtok(NULL, separator);
11
  }
12
  return ( i );
13
}
14

15

16
char buffer[] = "hamburg:120;";
17
S8 charsRead;
18
int parts;
19
char separator[] = {';',':'};
20
char *part[3];
21

22

23

24
parts = strtoken(buffer, separator, part);

in part[0] soll dann hamburg stehen
in part[1] 120

das funktioniert z.B. 5 mal richtig und dann steht manchmal in part[0] 
nur hamb

kann mir jemand weiterhelfen wo mein Fehler liegt?

Gruß Michael
Gast #2932348
Lesenswert?

Hallo,

hier noch eine Anmerkung. Die Funktion strtok ist nicht reentrant fähig. 
Falls dieses erforderlich ist, sollte man strtok_r verwenden. Dieses 
könnte auch ein komischen Verhalten erklären, wobei der Hinweis von 
thomil natürlich auch genau richtig ist.

LG Microman

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren