Suche
Suche Menü

String zerteilen

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