Angepasste Ausgabe über printf
-
Hallo Leute,
habe folgendes Problem:
Ich möchte die Ausgabeelemente eines printf's über eine
ini-Datei festlegen, die zur Laufzeit geändert werden kann.
Die INI könnte so aussehen:
[AUSGEBEN]
Ausgabe_1=Variable_x,2
Ausgabe_2=Variable_y,1
...
Ausgabe_i=...In dem Fall stelle ich mir vor, dass z.B. der Inhalt des Intergers x über ein
printf ausgegeben wird und dafür 2 Stellen reserviert werden. Es sind maximal i
Werte anzuzeigen - kann aber auch weniger sein, wenn einem Schlüsselwort kein
Wert zugewiesen ist.
Ich möchte es nun so gestalten, dass für die Variable x auch mal 4 Stellen reserviert werden können oder vielleicht der Wert einer anderen Variablen z angezeigt wird.
Das Auslesen der INI-Datei und der prinzipielle Aufbau der Ausgabe stellen kein
Problem dar. Den Bezeichner der INI-Datei (z.B. Variable_x) speichere ich zunächst zusammen mit der zugehörigen Anzahl der Stellen in einem Array.
Aber wie kriege ich jetzt den Bogen vom ausgelesenen String "Variable_x" zur tatsächlich im Programm verwendeten Variablen x und derem Inhalt.
Hat jemand ne Idee? Kann auch völlig anderer Ansatz sein-Hauptsache es kommt das
Selbe raus.Grüße :xmas1:
Ifs
-
Mir ist ehrlich gesagt nicht ganz klar was du genau vorhast. Zu wirr deine Beschreibung mir ist. Suchst du etwa eine Struktur in der du deine Variablen/Bezeichner/whatever ablegen kannst? Z.B. sowas?
struct var{ char *name; // z.B. "Variable_1" int *values; // z.B. { 1, 4, 6, 3} size_t count; // z.B. 4 }
Und die willst du dann ensprechend formatiert ausgeben? Also anhand der Angaben einen Formatstring für printf() basteln?
-
Ok,
sorry wenn's etwas wirr zugeht.
Ich versuchs mal anders.
Ich möchte mir eine formatierte Ausgabe basteln, die
in der Lage ist, den aktuellen Inhalt jeder im Programm definierten Variable anzuzeigen.
Aber es soll während der Laufzeit selektiert werden, welche Variablen das sein
sollen und wieviel Stellen im printf zu reservieren sind. Dazu dienen die
Angaben in der INI-Datei.
Ein Bsp.:
Im Programm existieren z.B. die Integer x,y und i.
Nun soll einmal nur der Inhalt der Variablen x und y ausgegeben werden.
In der INI würde folgendes stehen:
[AUSGEBEN]
Ausgabe_1=x,2
Ausgabe_2=y,2
Es soll aber auch möglich sein z.B. nur den Inhalt der Variablen i auszugeben:
[AUSGEBEN]
Ausgabe_1=i,3
Ausgabe_2=Die INI-Datei liefert mir also jeweils zwei Dinge:
1. die Bezeichnung der Variablen - im letzten Fall "i"
2. und die Anzahl der zu reservierenden Stellen im printf.(Alle Variablen in den printf packen geht nicht).
Die Problematik:
Um den Inhalt der gewünschten Variablen i ausgeben zu können, muss ich also irgendwie das ausgelesene Zeichen "i" (INI-Datei) mit dem Variablennamen i in Beziehung bringen. Nach dem Motto: ist die Variable i existent, dann gebe
deren Inhalt aus, ansonsten nicht.Grüße (und sorry für den vielen Text...)
Ifs
-
Das geht auf direktem Weg nicht - zur Laufzeit existieren die Variablennamen nicht mehr, dort bleibt von deiner Variable 'x' oder 'i' nur ein entsprechend großer Speicherblock, in dem ihr aktueller Wert steht. Wenn du den Namen irgendwie weiterverwenden willst, mußt du ihn selber dranhängen, z.B. mit der Konstruktion von TactX.
(oder etwas verkürzt:
typedef struct { int value; char* name; } named_var; #define NAMED_VAR(n) named_var n={#n,0};
-
Danke für die Hilfe - werd' mir sowas mal bauen.
Grüße
Ifs