String formatierten String zuweisen



  • Hallo,

    gibt es eine Möglichkeite einem String einen formatierten
    String zuzuweisen?

    Also beispiel:

    char *formatted;
    
    formatted = BLA("Formatierter Text %d, %f, ...", aInt, aFloat);
    

    BLA ist hier der Platzhalter für eine Methode falls es sie gibt 😉



  • sprintf



  • Das war ja einfach, Danke 😉

    Dadurch entstand aber ein Problem, dass ich nicht verstehe.
    Warum meckert er dann wenn ich folgendes tue:

    char * format = sprintf("[%s - %s] %s (at %s:%d)\n", convert_enum_to_str(level), buffer, tmp_buf, file, line);
    

    Er sagt hier das ein cast von int zu char * stattfindet.

    Ich stelle mir das allerdings so vor, in sprintf steht jetzt der fertig
    formatierte String drin.
    convert_enum_to_str(level), buffer, tmp_buf und file sind bzw. geben
    alle Strings zurück. Lediglich die Line ist ein int.
    Die werden jetzt durch die %s und %d anweisungen in den String geschrieben.
    Jetzt speichert er diesen fertigen String in meine format variable rein.

    Warum hat er jetzt nen cast von int zu char* ?



  • ⚠ formatted ist nur ein Pointer auf char.
    Du solltest da schon entsprechen Speicherplatz haben.
    Entweder als Array char formatted[200]; oder mit malloc()

    http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/



  • Lyb schrieb:

    Warum hat er jetzt nen cast von int zu char* ?

    Weil der Return - Wert von sprintf die Anzahl der geschriebenen Zeichen ist. Vielleicht solltest Du mal genau nachsehen, wie die sprintf - Funktion funktioniert.



  • Ahh sprintf gibt die Anzahl an geschriebenen Zeichen zurück.
    Das kann ich ja dann schlecht einem String zuweisen....

    Ok, ich kann dem sprintf also z.B. mein char * format übergeben
    und dann schreibt sprintf den formatierten string in format rein?

    sprintf(format, "Der formatierte String %s %d", aString, aInt);
    


  • RTFM
    oder den Link den ich gepostet habe. 🙄 😡



  • Entschuldige DrikB 😉

    Gelesen, verstanden, umgesetzt!
    => funktioniert 😉

    Danke 😉


Anmelden zum Antworten