problem bei strtok



  • so ich habe ein problem mit
    strtok ich hatte die funktion su aus dem internet
    aber daran stimmt was nicht sie überprüft nicht ob |@| vorkommt sodern nur ob eins der zeichen vorkommt kann man das irgendwie ändern.
    oder gibt es eine funktion mit der ich das anders lösen kann
    mein problem pro zile sind immer 4 trennzeichen die jeweils einen text mit leerzeichen ist

    ziel der funktion ist es die zeile auseinanderzunehmen so dass ich es in einen anderen string an bestimmten stellen wieder einfügen kann

    so hier der auschnitt der funktion

    char Trenner[] = "|@|";
    
    		// Zeile auseinandernehmen.
    		token = strtok(sLine, Trenner);
    


  • Hallo,

    wenn du C++ benutzt, stringstreams:

    #include <iostream>
    #include <sstream>
    #include <string>
    using namespace std;
    
    const int MAX = 20;
    
    int main()
    {
        string String = "dies   ist ein test";
        stringstream complete;
        char part[MAX];
    
        complete << String;
    
        while(complete.getline(part, MAX, '\t'))
            cout << part << endl;
    }
    

    Falls nicht, oder falls du unbedingt strtok verwenden möchtest:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39338.html
    😉



  • wenn ich das richtig verstehe teilt er aber nach einer bestimmten zeichenanzahl oder ? das würde bei mir nämlich nicht funtkionieren da die anzahl pro abschnitt unterschiedlich ist ist und sich auch von zeile zu zeile ändert



  • Hi,

    Skippy schrieb:

    wenn ich das richtig verstehe teilt er aber nach einer bestimmten zeichenanzahl oder ? das würde bei mir nämlich nicht funtkionieren da die anzahl pro abschnitt unterschiedlich ist ist und sich auch von zeile zu zeile ändert

    ne, der trennt da wo ein Trennzeichen ist. Auch die Anzahl ist egal. Probiers einfach aus....



  • und wozu ist denn folgendes?

    const int MAX = 20;

    aber wenn er nach einen zeichen trennt ist es dann \t?

    kanns leider nicht testen da ich auf diesem rechner kein kompiler habe



  • @CarstenJ deine funktion bringt mir leider nichts da wie gesagt das trennzeichen
    bei mir eine zeichenfolge ist nämlich |@| und das funktioniert bei dir nicht
    ich bekomme eine warnung beim compilieren und beim starten des programms wird nur das erste zeichen als trennzeichen verglichen

    daher gibt es noch andere möglichkeiten?

    zur not habe ich auch das gefunden

    dummy = fscanf (FileStream, "%s:%s:%i:%i:%i\n", string1, string2, zahl1, zahl2, zahl3);
    

    also fscanf damit kann ich das auch formatieren problem nur ich weiss leider nicht wie man das so hinbekommt das fscanf die leerzeichen im ignoriert
    habe das zwar hier schonmal gelesen finde aber den artikel nicht mehr
    die formatierung war irgendwas [/ und weiterer lustiger zeichensalat


Anmelden zum Antworten