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 Arraychar formatted[200];
oder mitmalloc()
-
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!
=> funktioniertDanke