"..." funktionier nicht
-
Hallo,
Was bedeutet eigentlich "..." wenn ich es so verwenden:
bool Log(char* txt, ...) { }Ich frage deshalb, da bei mir folgender code nicht funktioniert (d.h. nur der 1. parameter wird ins logfile geschrieben):
bool Log(char* txt, ...) { va_list arg_list; char text[255]; va_start(arg_list, txt); vsprintf(text, txt, arg_list); //Converts Symbols To Actual Numbers va_end(arg_list); if((logfile = fopen(fn, "a+")) == NULL) { return false; } fprintf(logfile, text); putc('\n', logfile); fclose(logfile); return true; }lg.
-
das "..." bedeutet bei Funktionsparametern, dass sie noch weitere Parameter unbestimmter Anzahl und unbestimmten Types soweit ich weiß erhalten können.
Wie bei printf(const char* format, ...)
Die Parameter in der Funktion auszulesen ist dann natürlich auch möglich, einfach mal googlen
Edit: Ich sehe grad, du hast noch Code dazueditiert. Warum das nicht funktioniert kann ich dir nicht sagen, hab leider grad keine Zeit dazu.
-
Wie rufst du denn die Log() Funktion auf? vsprintf() erwarten die selben Formatangaben im zweiten Parameter wie alle anderen Funktionen der printf-Serie - wenn dort kein % vorkommt, ignoriert er nachfolgende Parameter.