Strings in Zeile vergleichen

Natürlich, jede Schleifenart kann in andere umgeschrieben werden:
C++:
char* token[20];
int len = 0;

token[len] = strtok(lineptr, ...);
while (token[len])
    token[++len] = strtok(NULL, ...);

Gruß

Super danke ! Nun versuche ich nur noch zu verstehen was genau da passiert.
Code:
token[len] = strtok(lineptr, ...);
Hier wird der Pointer auf das erste Zeichen geschrieben, was in der zeile ist oder?#
Code:
while (token[len])
    token[++len] = strtok(NULL, ...);
Hier wird nun jedes Zeichen mit NULL beschrieben, was den anforderungen entspricht?

Aber wie kann die While nun beendet werden? Weil ja alle Zeichen auf 0 Geschrieben werde müsste sie doch bereits nach dem ersten durchlauf beenden?!
 
Code:
token[len] = strtok(lineptr, ...);
Hier wird der Pointer auf das erste Zeichen geschrieben, was in der zeile ist oder?
Ja.
Code:
while (token[len])
    token[++len] = strtok(NULL, ...);
Hier wird nun jedes Zeichen mit NULL beschrieben, was den anforderungen entspricht?
Lies dir mal die Doku zu strtok durch, dann weißt du warum da NULL steht. :rtfm:
Aber wie kann die While nun beendet werden? Weil ja alle Zeichen auf 0 Geschrieben werde müsste sie doch bereits nach dem ersten durchlauf beenden?!
Die Frage macht keinen Sinn, da du von einer falschen Prämisse ausgehst.

Gruß
 
First of all, da werden har keine Zeichen beschrieben.
token ist kein Array aus Einzelbuchstaben (also ein String),
sondern ein Array aus Char-Pointern.
Ein Potenzielles Array aus char-Arrays, potenzielles Array aus Strings.
20 Strings.

Das erste strtok füllt den ersten String.
Das in der Schleife die anderen.

NULL deshalb, damit die nächsten Teile vom gleichen Quellstring genommen werden
(das ist einfach so festgelegt, dass dann NULL übergeben werden muss; siehe Doku).

Wenn dann der letzte Teil in einen String gefüllt worden ist,
liefert das nächste strtok selbst NULL zurück.
Deshalb die Schleifenbedingung.
Ist eine Kurzform von
C++:
while (token[len] != NULL)
 
Zurück