PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : variable Format-strings für printf?



Felix G
17.09.2008, 12:51
Hallo Leute,

der Titel sagt eigentlich schon fast alles...
Ich habe ein Menü, das natürlich auch unterschiedlichste Werte anzeigen können soll. Abhängig von mehreren für den jeweiligen Menüeintrag eingestellten Werten (Variablentyp, also int, float etc. außerdem optional jeweils Anzeige z.B. als hex oder oktal), soll dann für printf ein passender Formatstring gebaut werden...

z.B.
8Bit signed int: "%d"

32Bit unsigned int, Anzeige als hex: "%08X" (Länge aufgrund 32Bit, hex weil explizit gewünscht)

Irgendweche effizienten Vorschläge?
(ich würde ungern für jeden möglichen Fall ein eigenes printf spendieren, und möchte auch nicht unbedingt mit zeit/speicherfressenden Funktionen arbeiten... das printf ist schon schlimm genug)

SprinterSB
07.11.2008, 23:36
Ich versteh das Problem nicht.


char *a;
...
printf (a, b);


Oder suchst du was wie vaprintf oder

http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Constructing-Calls.html#Constructing-Calls

drew
09.11.2008, 12:51
Hallo Felix,

folgender Code sollte funktionieren. Vielleicht hilft Dir das weiter:


char format[50];

if( irgendwas )
{ strcpy(format,"Hex: 0x%X"); }
if( irgendwas_anderes )
{ strcpy(format,"Dez: %d"); }

printf(format,Dein_Wert);

Drew

Felix G
18.11.2008, 21:46
Eigentlich wollte ich die Formatstrings abhängig von diversen Parametern erzeugen, und zwar sollte das schon weit umfangreicher sein als das bloße kopieren vorgefertigter Formatstrings.

z.B. hätten eben auch Teile des Formatstrings wie etwa die Länge und die Anzahl der Nachkommastellen etc. mit berücksichtigt werden sollen.



Aber das Thema hat sich eigentlich erledigt, da ich auf die Triviallösung umgestiegen bin:
der passende Formatstring muss in der Definition der Menüeinträge von Hand angegeben werden.