verstehe strtkok() nicht so ganz...
-
Heyo,
ich habe hier ein Beispiel zu strtok und Zeigern...
Aber irgendwie komme ich nicht hinter das Verständnis
Ich beschreibe mal mit meinen Worten, was ich meine, was da passiert:
ptr = strtok (string, "\n\t ");
Das heißt meines Verständnisses nach, dass diese Zeichen aus dem string eleminiert werden.Schleife:
"So lange die Adresse, auf die ptr zeigt, nicht NULL ist, soll ausgegeben werden:
%d. Wort, %s String... und %d soll bei jedem Durchlauf um 1 erhöht werden.
%s bekommt die Adresse, wo ptr hinzeigt...Aber jetzt verstehe ich die nächste Zeile nicht
ptr = strtok (NULL, "\n\t ")
Was soll damit passieren?!Die Ausgabe listet die Wörter des Strings untereinander auf...
Aber woher weiß die Funktion immer, dass ein Wort vorbei ist?
Heißt NULL einfach, dass der Zeiger auf eine unbesetzte Speicheradresse zeigt?!
Ich raffe das nicht so ganz... hab gerade mit Zeigern angefangen und mich verwirrt das mit der Funktion dazu noch...
/* strtok.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char string[] = "Ein Teststring mit mehreren Worten\n" "und mehreren Zeilen.\t Ende\n"; int i=1; char *ptr; ptr = strtok(string, "\n\t "); while(ptr != NULL) { printf("% d. Wort: %s\n",i++,ptr); ptr = strtok(NULL, "\n\t "); } getchar(); return EXIT_SUCCESS; }
Greez
Haimi
-
Recherchier doch einfach mal ein bißchen. Zum Beispiel hier:
http://www.cplusplus.com/reference/clibrary/cstring/strtok/
-
Haimi schrieb:
Heyo,
ich habe hier ein Beispiel zu strtok und Zeigern...
Aber irgendwie komme ich nicht hinter das Verständnis
Ich beschreibe mal mit meinen Worten, was ich meine, was da passiert:
ptr = strtok (string, "\n\t ");
Das heißt meines Verständnisses nach, dass diese Zeichen aus dem string eleminiert werden.nein, da wird nichts eleminiert.
-
Selbstverständlich werden sie eliminiert! Folge doch mal meinem o.a. Link und lies sorgfältig.
-
Nein da wird nichts eliminiert, sondern der string in mehrere strings die durch "\n\t" unterteilt sind:
char string[15];
strcpy(string,"10:15:50");
char token[5]=strtok(string,":");
printf("%s\n",token);
token=strtok(NULL,":");
printf("%s\n",token);
token=strtok(NULL,":");
printf("%s\n",token);da sollte :
10
15
50
rauskommen.den code hab ich einfach so hingeklatscht müsste aber funzen(natürlich noch in ne funktion packen und stdio.h und string.h includen)
-
Andrew3726 schrieb:
Nein da wird nichts eliminiert, sondern der string in mehrere strings die durch "\n\t" unterteilt sind
wirds doch. das erste zeichen des begrenzer-strings wird mit 'ner 0 überschrieben.