_snprintf, _snwprintf

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

Syntax

int _snprintf(char* buffer, size_t nsize, const char* format, ...);

int _snwprintf(wchar_t* buffer, size_t nsize, const wchar_t* format, ...);

Beschreibung

Sendet eine formatierte Ausgabe an einen String mit der in nsize angegebenen Maximallänge. _snprintf und _snwprintf sind kompatibel mit den Microsoft-Funktionen _snprintf und _snprintfw.

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.

Ist nsize gleich 0, wird nichts in den String geschrieben (und er könnte NULL sein).

Ist der Wert von nsize zu klein, werden nur nsize Zeichen ohne das abschließende Zeichen ‘\0’ geschrieben, und der Rückgabewert ist –1.

Rückgabewert

Zahl der ausgegebenen Bytes oder -1, wenn nsize zu klein ist.


Beispiel

# include <stdio.h>
# include <stdlib.h>

int main()
{
//Erstellen eines Puffers für mehrere Formate
char buff[100];
char str[]="hello world!";
char c='!';
int i=123;
double d=23.3432;
int bf_len=sizeof(buff)/sizeof(buff[0])-1;
int buff_left, buff_used;
buff_used=0;
buff_left=bf_len-buff_used;
int buff_written;
 buff_written = _snprintf(&buff[buff_used], buff_left, "%s\n", str );
  //Puffer aktualisieren
   if (buff_written >= 0)
   {
buff_used += buff_written;
buff_left -= buff_written;
}
  if (buff_left>0) {
   buff_written = _snprintf(&buff[buff_used], buff_left, "%c\n", c );
  //Puffer aktualisieren
   if (buff_written >= 0)
   {
buff_used += buff_written;
buff_left -= buff_written;
}
  }
   if (buff_left>0) {
   buff_written = _snprintf(&buff[buff_used], buff_left, "%d\n", i );
  //Puffer aktualisieren
   if (buff_written >= 0)
   {
buff_used += buff_written;
buff_left -= buff_written;
}
  }
if (buff_left>0) {
   buff_written = _snprintf(&buff[buff_used], buff_left, "%f\n", d );
  //Puffer aktualisieren
   if (buff_written >= 0)
   {
buff_used += buff_written;
buff_left -= buff_written;
}
  }
  printf("The buffer:\n%s\n", buff );
  printf("The buffer has %d bytes", buff_used);
return 0;
}

Siehe auch