Dela via


_vcprintf, _vcprintf_l, , _vcwprintf_vcwprintf_l

Skriver formaterade utdata till konsolen med hjälp av en pekare till en lista med argument. Säkrare versioner av dessa funktioner är tillgängliga, se _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l.

Viktigt!

Det här API:et kan inte användas i program som körs i Windows Runtime. Mer information finns i CRT-funktioner som inte stöds i Universella Windows Platform-appar.

Syntax

int _vcprintf(
   const char* format,
   va_list argptr
);
int _vcprintf_l(
   const char* format,
   _locale_t locale,
   va_list argptr
);
int _vcwprintf(
   const wchar_t* format,
   va_list argptr
);
int _vcwprintf_l(
   const wchar_t* format,
   _locale_t locale,
   va_list argptr
);

Parameterar

format
Specifikation av format.

argptr
Pekare till en lista med argument.

locale
Språkvarianten som ska användas.

Mer information finns i Syntax för formatspecifikation.

Returvärde

Antalet tecken som skrivs eller ett negativt värde om ett utdatafel inträffar. Om format är en null-pekare anropas den ogiltiga parameterhanteraren enligt beskrivningen i Parameterverifiering. Om körningen tillåts fortsätta errno anges till EINVAL, och -1 returneras.

Anmärkningar

Var och en av dessa funktioner tar en pekare till en argumentlista, formaterar och skriver sedan de angivna data till konsolen. _vcwprintf är wide-character-versionen av _vcprintf. Det tar en sträng med breda tecken som argument.

Versionerna av dessa funktioner med suffixet _l är identiska förutom att de använder språkparametern som skickas i stället för det aktuella språket.

Viktigt!

Kontrollera att det format inte är en användardefinierad sträng. Mer information finns i Undvika buffertöverskridningar.

Från och med Windows 10 version 2004 (version 19041) skriver funktionsfamiljen printf ut exakt representerande flyttalsnummer enligt IEEE 754-reglerna för avrundning. I tidigare versioner av Windows skulle exakt representerande flyttalsnummer som slutar på "5" alltid avrunda uppåt. IEEE 754 anger att de måste avrunda till den närmaste jämna siffran (även kallat "Bankers avrundning"). Till exempel bör både printf("%1.0f", 1.5) och printf("%1.0f", 2.5) avrunda till 2. Tidigare skulle 1,5 avrunda till 2 och 2,5 skulle avrunda till 3. Den här ändringen påverkar endast exakt representerande tal. Till exempel fortsätter 2.35 (som, när det representeras i minnet, är närmare 2.3500000000000000008) att avrunda upp till 2,4. Avrundning som utförs av dessa funktioner respekterar nu också flyttalsrundningsläget som anges av fesetround. Tidigare valde FE_TONEAREST avrundning alltid beteende. Den här ändringen påverkar endast program som skapats med Visual Studio 2019 version 16.2 och senare. Om du vill använda det äldre avrundningsbeteendet för flyttalser länkar du till legacy_stdio_float_rounding.obj.

Allmän textrutinmappning

TCHAR. H-rutin _UNICODE och _MBCS inte definierad _MBCS definierad _UNICODE definierad
_vtcprintf _vcprintf _vcprintf _vcwprintf
_vtcprintf_l _vcprintf_l _vcprintf_l _vcwprintf_l

Kravspecifikation

Rutin Obligatoriskt huvud Valfria rubriker
_vcprintf, _vcprintf_l <conio.h> och <stdarg.h> <varargs.h>*
_vcwprintf, _vcwprintf_l <conio.h> eller <wchar.h> och <stdarg.h> <varargs.h>*

* Krävs för UNIX V-kompatibilitet.

Mer kompatibilitetsinformation finns i Kompatibilitet.

Exempel

// crt_vcprintf.cpp

#include <conio.h>
#include <stdarg.h>

// An error formatting function used to print to the console.
int eprintf(const char* format, ...)
{
    va_list args;
    va_start(args, format);
    int result = _vcprintf(format, args);
    va_end(args);
    return result;
}

int main()
{
    eprintf("(%d:%d): Error %s%d : %s\n", 10, 23, "C", 2111,
           "<some error text>");
    eprintf("    (Related to symbol '%s' defined on line %d).\n",
            "<symbol>", 5 );
}
(10,23): Error C2111 : <some error text>
    (Related to symbol '<symbol>' defined on line 5).

Se även

Strömma I/O
vprintf funktioner
_cprintf, _cprintf_l, , _cwprintf_cwprintf_l
fprintf, _fprintf_l, , fwprintf_fwprintf_l
printf, _printf_l, , wprintf_wprintf_l
sprintf, _sprintf_l, swprintf, , , _swprintf_l__swprintf_l
va_arg, va_copy, , va_endva_start