strok()



  • Ich habe hier im Forum folgendes gefunden.

    int i = 1;
    char String[] = "Hallo;du,schöne#Welt";
    char String2[] = "1;2,3#4";
    char* pToken = strtok(String, ";,#");
    if (pToken)
    {
        printf("Token%d: %s\n", i,pToken);
        i++;
        while ( (pToken = strtok(NULL, ";,#")) )
        {
            printf("Token%d: %s\n", i,pToken);
            i++;
        }
    }
    

    Ich jedoch will zwei stings teilen.
    Ich weiß das ich strtok() nicht einfach so nutzen kann.
    so hätte ich es gern!

    int i = 1;
    char String[] = "Hallo;du,schöne#Welt";
    char* pToken = strtok(String, ";,#");
    char* pToken2 = strtok(String2, ";,#");
    char * pNew;
    if (pToken)
    {
        strcpy(pNew,pToken );
        strcat(pNew,pToken2 );
        i++;
        while ( (pToken = strtok(NULL, ";,#")) )
        {
            strcat(pNew,pToken );
            strcat(pNew,pToken2 );
            i++;
        }
    }
    

    Das das nicht so geht weiß ich (leider).
    Nur was kann ich machen?
    oder gibt es eine andere Funktion?



  • Auf manchen Systemen gibt es eine man: strtok_r(), der du zusätzlich einen Kontext mitgeben kannst. Andernfalls könntest du dir selber etwas mit strcspn() zusammenbauen.



  • man: strtok_r(3) gibt es auf POSIX-Systemen. Ist aber afaik kein ISO C.

    Ansonsten schreib dir eben so etwas selbst (ist ja keine große Wissenschaft, die dahinter steckt)


Anmelden zum Antworten