_snprintf, _snwprintf
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;
}