tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
409
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sberger sberger ist offline Grünschnabel
    Registriert seit
    Nov 2011
    Beiträge
    3
    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
     

  2. #2
    3Cyb3r 3Cyb3r ist offline Mitglied Brokat
    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.

    MFG
     
    Bei 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

  3. #3
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von sberger Beitrag anzeigen
    Für mich ist nich ganz klar wodurch mehrere token ausgegeben werden können, wenn pstr nie durchlaufen wird?!
    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:
    Code c:
    1
    2
    3
    
    for (token = mystrtok(str, delim); token != NULL; token = mystrtok(NULL, delim)) {
      printf (..., token);
    }
    Gruß
    sberger bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  4. #4
    sberger sberger ist offline Grünschnabel
    Registriert seit
    Nov 2011
    Beiträge
    3
    Danke für die schnellen Antworten. Ich werds gleich mal ausprobieren.

    MFG
     

Ähnliche Themen

  1. [c++] Pointer auf konstanten Pointer-Parameter setzen
    Von digitalFreeman im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 18.02.09, 11:11
  2. [c] while-schleife mit pointer
    Von Pherseus im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 13.12.06, 21:33
  3. Antworten: 4
    Letzter Beitrag: 07.07.06, 13:34
  4. Antworten: 1
    Letzter Beitrag: 22.12.05, 09:27
  5. Antworten: 6
    Letzter Beitrag: 02.11.03, 21:23

Stichworte