vsprintf()
ist in der stdio
definiert, die in C über stdio.h
, bzw in C++ über cstdio
eingebunden wird.
vsprintf()
wird dazu verwendet, um einen String aus einem Platzhalter für String-Funktionen zu erzeugen. Hierfür wird in den Buffer, der als erstes Argument übergeben wird, der Formatstring kopiert und die Substitutionszeichen mit dem gegebenen Parametern ersetzt.
#include <stdio.h> int vsprintf( char * buffer, char const * formatString, va_list args );
buffer: Zeiger auf einen Speicherbereich, in dem der String zusammenkopiert wird
formatString: Platzhalter für String-Funktionen, der beschreibt, wie der String zusammengesetzt wird
args: Eine Liste von Argumenten
Return Value: Die Länge des Strings im Erfolgsfall (das angehängte Nullbyte wird nicht mitgezählt) oder eine negative Zahl im Fehlerfall.
-
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <stdarg.h> #include <string.h> int error( char const * format, ... ) { char buffer[256]; va_list args; va_start( args, format ); vsprintf( buffer, format, args ); va_end( args ); return fprintf( stderr, "Code %d (%s): %s\n", errno, strerror( errno ), buffer ); } int main (void) { char const * filename = "nicht-existierende-datei"; FILE * file = fopen( filename, "r+" ); if( !file ) error( "Could not open '%s'", filename ); else fclose( file ); return EXIT_SUCCESS; }
Ausgabe (auf der Standard-Fehler-Konsole):
Code 2 (No such file or directory): Could not open 'nicht-existierende-datei'