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)


Anmelden zum Antworten