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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.