Ich stehe vor einem seltsamen Problem. Ich verwende sprintf oder swprintf entsprechend dem Build definiert mit oder ohne Unicode. Ich habe diese Funktionen in meiner eigenen Funktion wie folgt gewickelt:Der Aufruf von swprint aus einer separaten lib schlägt fehl
int mysprintf(MCHAR* str,size_t size, const MCHAR* format, ...)
{
#ifdef MYUNICODE
return swprintf(str, size, format);
#else
return snprintf(str, format);
#endif
}
Diese Funktion ist in einer String-Klasse, die ein eigenständiges Projekt ist und als lib zusammengestellt. Ich benutze es in einem anderen Programm. Wenn ich nun das mysprintf()
msprintf(str,10, _M("%d,%d"),height,width);
verwende, bekomme ich einige Garbage-Werte im String-Puffer. Aber wenn ich die Funktion swprintf direkt aus dem Programm heraus anrufe, funktioniert das mit Geldstrafen. Ich habe UNICODE im Build definiert und die Funktion swprintf wird aufgerufen, aber es füllt einige Werte für den Speicher. Ich verstehe nicht, was falsch läuft.
Dank Amit
Danke Magnus, das hat das Konzept geklärt. – amit
Anytime Mate :) – ralphtheninja
swprintf() nimmt keine va_list, aber vswprintf() tut. – bk1e