vsnprintf, _vsnprintf, vsnwprintf, _vsnwprintf

Aus RAD Studio
Wechseln zu: Navigation, Suche

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;
}

Siehe auch