1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
409
409
EMPFEHLEN
-
Hallo,
ich hätte da eine Frage bezüglich eines Codeteils, welchen ich nicht wirklich verstehe.
Und zwar geht es um folgened for-Schleife:
Code :1 2 3 4 5 6 7 8 9
char *str = "das soll in token zerlegt werden"; char *p_str; for (p_str = str; ;p_str = NULL) { token = mystrtok(p_str,delim); if (token == NULL) break; printf("\n: %s",token); }
Denn vollständigen Code dazu gibts auf: http://simplestcodings.blogspot.com/...izer-in-c.html
Für mich ist nich ganz klar wodurch mehrere token ausgegeben werden können, wenn pstr nie durchlaufen wird?! Kann man das gleiche auch mit einer anderen Schleifenform realisieren. Ich habs mit einer while() probiert, dann wird aber nur der erste token endlos ausgegben.
Ich wär für Ratschläge wirklich dankbar...
LG
-
17.11.11 13:00 #2
- Registriert seit
- May 2008
- Ort
- Baunatal (Hessen)
- Beiträge
- 413
Bei deiner for-Schleife fehlt eine Initialisierung der Zählvariable, sowie deren Incremen-oder Decrementierung.
Na klar funktioniert das auch mit einer while-Schleife; funktioniert mit jedem Schleifentyp in C.
schau dir am besten noch einmal an wie Schleifen funktionieren - deren Syntax und poste deine while-Schleife, sowie eine richtige for-Schleife. Wenn wir das geklärt haben, dann klären wir die Pointer-Arithmetik.
MFGBei der Geburt ist ein Mensch so unfertig, wie ein an einem schönen blauen Montag in Taiwan hergestellter Computer vor der Programmierung.
- Wolfgang Körner
-
17.11.11 13:32 #3
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
pstr wird durchlaufen. Aber nicht durch die Schleife sondern durch die Anwendung von strtok (bzw. mystrtok in diesem Fall).
Es ist eine etwas ungewöhnliche Anwendung von strtok bzw. der for Schleife, da in jedem Schleifendurchlauf p_str immer wieder auf NULL gesetzt wird.
Allerdings funktioniert strtok eben genau so: erstmal mit einem String ungleich NULL aufrufen und dann immer NULL als ersten Parameter übergeben um über die restlichen Token zu iterieren. Letztlich wird die Schleife abgebrochen wenn strtok NULL zurück gibt.
Äquivalent:
GrußCode c:1 2 3
for (token = mystrtok(str, delim); token != NULL; token = mystrtok(NULL, delim)) { printf (..., token); }
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Danke für die schnellen Antworten. Ich werds gleich mal ausprobieren.
MFG
Ähnliche Themen
-
[c++] Pointer auf konstanten Pointer-Parameter setzen
Von digitalFreeman im Forum C/C++Antworten: 4Letzter Beitrag: 18.02.09, 11:11 -
[c] while-schleife mit pointer
Von Pherseus im Forum C/C++Antworten: 2Letzter Beitrag: 13.12.06, 21:33 -
[C] Prüfen, ob Inhalt von Pointer auf Pointer existiert
Von mc_gulasch im Forum C/C++Antworten: 4Letzter Beitrag: 07.07.06, 13:34 -
Aus Zwei Pointer Arrays mache ein Pointer Array
Von janosch im Forum C/C++Antworten: 1Letzter Beitrag: 22.12.05, 09:27 -
[C++] Objekt Pointer zuweisen und Methoden auf Pointer realisieren?
Von Ezzz im Forum C/C++Antworten: 6Letzter Beitrag: 02.11.03, 21:23





Zitieren

Login






