Mit strtok Strings zerteilen und splitten
char * strtok(char *string, char *delimiters);
Mit strtok können wir einen String anhand von Trennzeichen zerteilen und die einzelnen Abschnitte herauslesen. Die Trennzeichen werden im Parameter delimiter (Begrenzungszeichen, Separator) übergeben.
In diesem Beispiel werden alle Abschnitte aus string herausgelesen, welche mit Komma oder Strich-Punkt begrenzt werden. Beim ersten Aufruf muss strtok mit einem String initialisiert werden. Die Rückgabe ist hierbei der erste Abschnitt. Bei Folgeaufrufen wird statt string der NULL Wert übergeben, da strtok bereits initialisiert ist und intern einen Zeiger auf string gespeichert hat. Der Zeiger ptr, welcher den Rückgabewert abfängt, zeigt auf das erste Zeichen des jeweiligen Abschnittes in string. Das jeweilige Ende wird mit \0 in string gesetzt. D.h. der String wird verändert. Deshalb sollte man beim Verwenden von strtok immer nur eine Kopie eines Strings übergeben.
char string[] = "Kurt,Kanns;555678;DE"; char delimiter[] = ",;"; char *ptr; // initialisieren und ersten Abschnitt erstellen ptr = strtok(string, delimiter); while(ptr != NULL) { printf("Abschnitt gefunden: %s\n", ptr); // naechsten Abschnitt erstellen ptr = strtok(NULL, delimiter); }
Abschnitt gefunden: Kurt Abschnitt gefunden: Kanns Abschnitt gefunden: 555678 Abschnitt gefunden: DE