Hallo, der Titel ist ein bisschen blöd gewählt, aber ich weiß nicht wie ich es besser ausdrücken soll. Ihr werdet (hoffentlich) nach Lesen des Textes herausfinden was ich erreichen möchte. Mein Ziel ist das Erreichen folgender Syntax: void Ausgabe(char param1,char param2, "Textxyz%d",var1); param1, param2....Parameter "Textxyz%d"....beliebiger Text var1... Variable Also im Prinzip soll die Funktion genauso aussehen und arbeiten wie die Fkt. printf() mit der Möglichkeit zusätzlich zwei Parameter(in meinem Fall sind das Adressen) anzugeben. Doch wie kann ich das am ehesten bewerkstelligen? Wenn es nur ein einfacher Text wäre, dann könnte man das diesen ja einfach in einen String schreiben und dann Zeichen für Zeichen aus dem String rausholen. Aber dann würde ich die Möglichkeit der formatierten Ausgabe(%d,%f...etc) verlieren... Mit der Fkt. sprintf() kann ich meines Erachtens auch nicht arbeiten, da ich ja nicht weiß wieviele Variablen man der Fkt übergibt? Hat da jemand eine Idee wie man das Lösen könnte? Danke!
Da gibt es mehrere Methoden. Die einfachste und handwerklichste dürfte eine Erweiterung von printf() sein: -- Sieh dir printf() im Quellcode der Library an. -- Kopiere die Funktion. -- Benenne die Funktion
1 | int printf( const char *format ,…) |
um in
1 | int Ausgabe( const char *format ,…) |
-- Schreibe an den Anfang der Parameterliste der neuen Ausgabe deine zwei zusätzlichen Parameter
1 | int Ausgabe( char param1, char param2, const char *format ,…) |
-- Mach in der Ausgabe() irgendwas mit deinen Parametern. Der "alte" printf-Teil bleibt gleich.
Schau mal zu den Hilfsfunktionen: va_start() va_arg() va_end() Diese verarbeiten variable Parameterlisten.
Zwei printf's find ich irgendwie unpraktisch. Hätte das lieber in einer Funktion vereint. Ich werde mal den Ansatz mit dem Quellcode und vsprintf() weiter verfolgen. Danke für die Tipps. Ich melde mich wieder
Ratlos wrote: > Also im Prinzip soll die Funktion genauso aussehen und arbeiten wie die > Fkt. printf() mit der Möglichkeit zusätzlich zwei Parameter(in meinem > Fall sind das Adressen) anzugeben. man 3 va_arg
Michael G. wrote: > Ratlos wrote: > >> Also im Prinzip soll die Funktion genauso aussehen und arbeiten wie die >> Fkt. printf() mit der Möglichkeit zusätzlich zwei Parameter(in meinem >> Fall sind das Adressen) anzugeben. > > man 3 va_arg Komisch, geht gar nicht in der Windows Konsole. http://www.manpagez.com/man/3/va_arg/
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.