vsnprintf, _vsnprintf, vsnwprintf, _vsnwprintf
Nach oben zu Stdio.h - Index
Header-Datei
stdio.h
Kategorie
Routinen für Speicher- und String-Bearbeitung
Prototyp
int _vsnprintf(char* buffer, size_t nsize, const char* format, va_list param);
int _vsnwprintf(wchar_t* buffer, size_t nsize, const wchar_t* format, va_list param);
Beschreibung
Sendet eine formatierte Ausgabe an einen Puffer mit der in nsize angegebenen Maximalgröße.
Wenn die Anzahl der ausgegebenen Bytes:
- < nsize ist, werden alle Zeichen, einschließlich des abschließenden ‘\0’ geschrieben.
- == nsize ist, werden nsize Zeichen ohne das abschließende ‘\0’ geschrieben.
- > nsize ist, werden nsize Zeichen ohne das abschließende ‘\0’ geschrieben.
Ist nsize gleich 0, wird nichts in den String geschrieben (und er könnte NULL sein).
Rückgabewert
Die Anzahl der ausgegebenen Bytes oder, wenn nsize gleich 0 ist, die Anzahl der erforderlichen Bytes ohne das abschließende Zeichen ‘\0’.
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |
Beispiel
# include <stdio.h>
# include <wtypes.h>
void Vprint_test(char *format, ...)
{
int n_byte = 0;
char buff[30];
buff[0]=0;
va_list param; //Liste der Parameter
va_start(param, format);
n_byte = vsnprintf( buff, sizeof(buff) - 1, format, param);
//Länge des Puffers mit den geschriebenen Bytes vergleichen, um zu überprüfen, ob der Puffer groß genug ist
if (n_byte<sizeof(buff)) {
printf("all characters were written:(%d bytes)\n buff: %s\n", n_byte, buff);
} else
{
if (n_byte==sizeof(buff)) {
printf("%d characters were written(with no terminating character):(%d bytes)\n buff: %s\n", sizeof(buff),n_byte, buff);
}else
printf("only %d characters were written(with no terminating character):(%d bytes)\n buff: %s\n", sizeof(buff),n_byte, buff);
}
}
int main() {
Vprint_test("%s %d %f", "Hello", 123, 23.45);
return 0;
}