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 FormatString 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: Formatstring, 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'