Problem:Argumentliste übergeben
-
Ich will eine Funktion definieren, welcher beliebig viele Argumente übergeben werden können:
void printlog(char* text,...);
Dabei soll der Stiel von printf übernommen werden, also soll man folgendes schreiben können:
printlog("Hallo %s %s %s",vorname,2vorname,nachname);
Dafür habe ich folgenden Code geschrieben:void printlog(char *text,...) { va_list arglist; char tmp[500]; va_start(arglist, text); sprintf(tmp,text,arglist); ... //schreibe tmp in log }
Doch es kommen sowohl falsche Zahlen(z.B.: 1240 statt 100) und falsche Buchstaben heraus(z.B: F9s statt ABC).
Weiß jemand, woran das liegen könnte?
-
Wenn du eine Arglist übergeben willst, brauchst du:
svprintf(char* dest, const char* control, va_list arg);
(auch in stdio.h)