sscanf oder sprintf um wert zu formatieren



  • Hi Leute,

    hab ein kleines Problemchen.
    Ich möchte gerne ein chararray folgender Struktur parsen.
    Inhalt:
    Ergebnis "123"
    Der Wert steht z.B. in pdata (*).
    Jetzt weiss ich nicht wie ich die Anführungszeichen in einem sscanf entfernen kann. Mit ' Hochkommas müsste es ja so gehen:

    //Beispiel
    sscanf(pdata,"Ergebnis '%s'",pdata);
    

    Hat jemand ne Idee? In dem string stehen nochmal 2 Anführungszeichen und mich interessiert nur der Inhalt zwischen den beiden Anführungszeichen.

    Vielen Dank!!



  • mit backslashes escapen...

    sscanf(pdata,"Ergebnis \"%s\"",pdata);
    

    allerdings die frage ob das funktioniert wenn du in den speicher auf den pdata zeigt selber schreibst. kann ich jetzt so aus dem hut nicht sagen. ausprobieren



  • Hi Windalf,

    das erste Zeichen haut er mir raus. Nur das abschliessende bleibt leider drin.
    Der string schaut dann z.B. so aus:
    "123""
    Zuvor sah er noch so aus
    ""123""
    Wir kommen der Sache also näher.
    Das mit dem Zeiger kopieren funktioniert.
    Ich versuche momentan meinen Code zu optimieren und möchte jetzt an dieser Stelle ungern mit zerschnippeln über mehrere Zeilen anfangen.
    Vielleicht haste noch nen Tipp, es gibt doch ne Möglichkeit mit regulären Ausdrücken zu arbeiten, wäre das vielleicht die Lösung?
    Danke schonmal für die Hilfe, hab wieder was dazu gelernt 😉



  • weiss ich spontan auch nciht... wenn es sowieso das letzte zeichen ist setz das einfach auf 0 und der string ist gekürzt... 😃



  • Jo ich mach das momentan so.

    pdata[(strlen(pdata)-1)]=0;
    


  • Kannst es ja mal mit

    sscanf(pdata,"Ergebnis \"%[^\"]s\"",pdata);
    

    probieren...



  • Kannst es ja mal mit

    sscanf(pdata,"Ergebnis \"%[^\"]s\"",pdata);
    

    probieren...



  • Ein andere Möglichkeit wäre:
    - String mit einen Pointer zeichenweise durchlaufen, und dann die Ziffern (isNum)in einem Extra-String speichern
    - diesen mit sscanf in ein Zahlenformat formatieren



  • virtual schrieb:

    Kannst es ja mal mit

    sscanf(pdata,"Ergebnis \"%[^\"]s\"",pdata);
    

    probieren...

    Danke funktionier wunderbar, jetzt würde mich nur interessieren für was die Zeichen:
    [
    ^
    ]
    stehen?
    Danke!


Anmelden zum Antworten