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

Prototyp

int snprintf(char* buffer, size_t nsize, const char* fmt, ...);

int snwprintf(wchar_t* buffer, size_t nsize, const wchar_t* fmt, ...);

Beschreibung

Sendet eine formatierte Ausgabe an einen Puffer von 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

Anzahl der ausgegebenen Bytes oder, wenn nsize gleich 0 ist, die Anzahl der erforderlichen Bytes ohne das abschließende Zeichen ‘\0’.

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