Forum: Compiler & IDEs strtok


von TechInfo (Gast)


Lesenswert?

Moin,

es folgt ein Beispielcode für die strtok-Funktion:
1
int i = 1;
2
char String[] = "Hallo;du,schöne#Welt";
3
char* pToken = strtok(String, ";,#");
4
if (pToken)
5
{
6
    printf("Token%d: %s\n", i,pToken);
7
    i++;
8
    while ( (pToken = strtok(NULL, ";,#")) )
9
    {
10
        printf("Token%d: %s\n", i,pToken);
11
        i++;
12
    }
13
}

Ich benutze die Funktion auf ähnliche Weise, nur dass ich anstatt der 
printf-Anweisung 15 if-Abfragen durchführe, ob der Token einem der 15 
Strings entspricht (mittels strncmp).

Ich muss also im Moment die 15 if-Anweisungen sowohl nach if (pToken){ 
...
als auch in der while-Schleife einfügen.

Das sieht mir etwas ungeschickt aus. Ich habe überlegt ob es eine 
Möglichkeit gibt, direkt in die while-Schleife einzusteigen, damit ich 
die 15 Abfragen nur einmal coden muss, habe aber nichts gefunden. Habt 
ihr eine Idee?

Gruß

TechInfo

von AVR-User (Gast)


Lesenswert?

pack die strncmps einfach in eine Funktion. Macht es übersichtlicher...

von TechInfo (Gast)


Lesenswert?

Jap das hatte ich sowieso vor, schließlich reden wir ja hier von der 
main.

von Karl H. (kbuchegg)


Lesenswert?

Erstens, wie schon angesprochen, die Auslagerung in
eine Funktion.

Und zweitens machst du das Schleifenkonstrukt mal etwas
lesbarer:
1
  int i = 1;
2
  char String[] = "Hallo;du,schöne#Welt";
3
  char* pToken = strtok(String, ";,#");
4
5
  while( pToken ) {
6
    printf("Token%d: %s\n", i,pToken);
7
    i++;
8
    pToken = strtok(NULL, ";,#");
9
  }

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.