Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Schrijf opgemaakte gegevens naar een tekenreeks met de mogelijkheid om de volgorde op te geven waarin de parameters worden gebruikt in de notatietekenreeks.
Syntaxis
int _sprintf_p(
   char *buffer,
   size_t sizeOfBuffer,
   const char *format [,
   argument_list]
);
int _sprintf_p_l(
   char *buffer,
   size_t sizeOfBuffer,
   const char *format,
   _locale_t locale [,
   argument_list]
);
int _swprintf_p(
   wchar_t *buffer,
   size_t sizeOfBuffer,
   const wchar_t *format [,
   argument_list]
);
int _swprintf_p_l(
   wchar_t *buffer,
   size_t sizeOfBuffer,
   const wchar_t *format,
   _locale_t locale [,
   argument_list]
);
Parameterwaarden
buffer
Opslaglocatie voor uitvoer
sizeOfBuffer
Maximum aantal tekens dat moet worden opgeslagen.
format
Tekenreeks voor besturingselement opmaken.
argument_list
Optionele argumenten voor de notatietekenreeks.
locale
De landinstelling die moet worden gebruikt.
Zie Specificatiesyntaxis opmaken voor meer informatie.
Retourwaarde
Het aantal geschreven tekens of -1 als er een fout is opgetreden.
Opmerkingen
De _sprintf_p functie formatteert en slaat een reeks tekens en waarden op in buffer. Elk argument in de argument_list (indien aanwezig) wordt geconverteerd en uitvoer volgens de bijbehorende indelingsspecificatie in format. Het format argument maakt gebruik van de syntaxis van de notatiespecificatie voor printf en wprintf functies. Er wordt een null-teken toegevoegd nadat het laatste teken is geschreven. Als kopiƫren plaatsvindt tussen tekenreeksen die overlappen, is het gedrag niet gedefinieerd. Het verschil tussen _sprintf_p en sprintf_s is dat ondersteuning _sprintf_p biedt voor positionele parameters, waarmee u de volgorde kunt opgeven waarin de argumenten worden gebruikt in de notatietekenreeks. Zie printf_p Positionele parametersvoor meer informatie.
              _swprintf_p is een brede versie van _sprintf_p; de aanwijzerargumenten die _swprintf_p tekenreeksen breed zijn. Detectie van coderingsfouten in _swprintf_p kan afwijken van de detectie in _sprintf_p. 
              _swprintf_p en fwprintf_p gedraagt zich identiek, behalve dat _swprintf_p uitvoer naar een tekenreeks wordt geschreven in plaats van naar een bestemming van het type FILE, en _swprintf_p vereist dat de parameter het count maximum aantal tekens opgeeft dat moet worden geschreven. De versies van deze functies met het _l achtervoegsel zijn identiek, behalve dat ze de locale-parameter gebruiken die wordt doorgegeven in plaats van de huidige thread-locale.
              _sprintf_p retourneert het aantal bytes dat is opgeslagen in buffer, waarbij het null-teken voor het beƫindigen niet wordt geteld. 
              _swprintf_p retourneert het aantal brede tekens dat is opgeslagen in buffer, waarbij het afsluitende null-brede teken niet wordt geteld. Als buffer of format een null-aanwijzer is, of als de notatietekenreeks ongeldige opmaaktekens bevat, wordt de ongeldige parameterhandler aangeroepen, zoals beschreven in parametervalidatie. Als de uitvoering mag doorgaan, worden deze functies teruggezet -1 en ingesteld errno op EINVAL.
Belangrijk
Vanaf Windows 10 versie 2004 (build 19041) drukt de printf reeks functies exact vertegenwoordigbare zwevende kommanummers af volgens de IEEE 754-regels voor afronding. In eerdere versies van Windows zouden de zwevende kommanummers die eindigen op '5' altijd naar boven afronden. IEEE 754 geeft aan dat ze moeten afronden op het dichtstbijzijnde even cijfer (ook wel bekend als 'Afronding van bankier'). Beide moeten bijvoorbeeld printf("%1.0f", 1.5)printf("%1.0f", 2.5) worden afgerond op 2. Voorheen zou 1,5 afronden op 2 en 2,5 naar 3. Deze wijziging is alleen van invloed op exact vertegenwoordigbare getallen. Bijvoorbeeld: 2.35 (die, wanneer deze wordt weergegeven in het geheugen, dichter bij 2.350000000000008) blijft afronden tot 2,4. Afronding die door deze functies wordt uitgevoerd, respecteert nu ook de drijvende-komma-afrondingsmodus die is ingesteld door fesetround. Eerder koos afronding altijd voor FE_TONEAREST gedrag. Deze wijziging is alleen van invloed op programma's die zijn gebouwd met Visual Studio 2019 versie 16.2 en hoger. Als u het verouderde drijvendekomma-afrondingsgedrag wilt gebruiken, moet u een koppeling maken met legacy_stdio_float_rounding.obj.
Algemene routinetoewijzingen voor tekst
              TCHAR.H routine | 
              _UNICODE en _MBCS niet gedefinieerd | 
              _MBCS Gedefinieerd | 
              _UNICODE Gedefinieerd | 
|---|---|---|---|
_stprintf_p | 
_sprintf_p | 
_sprintf_p | 
_swprintf_p | 
_stprintf_p_l | 
_sprintf_p_l | 
_sprintf_p_l | 
_swprintf_p_l | 
Behoeften
| Routine | Vereiste header | 
|---|---|
              _sprintf_p, _sprintf_p_l | 
<stdio.h> | 
              _swprintf_p, _swprintf_p_l | 
              <stdio.h> of <wchar.h> | 
Zie Compatibiliteit voor meer compatibiliteitsinformatie.
Voorbeeld: Gegevens _sprintf_p opmaken
// crt_sprintf_p.c
// This program uses _sprintf_p to format various
// data and place them in the string named buffer.
//
#include <stdio.h>
int main( void )
{
    char     buffer[200],
            s[] = "computer", c = 'l';
    int      i = 35,
            j;
    float    fp = 1.7320534f;
    // Format and print various data:
    j  = _sprintf_p( buffer, 200,
                     "   String:    %s\n", s );
    j += _sprintf_p( buffer + j, 200 - j,
                     "   Character: %c\n", c );
    j += _sprintf_p( buffer + j, 200 - j,
                     "   Integer:   %d\n", i );
    j += _sprintf_p( buffer + j, 200 - j,
                     "   Real:      %f\n", fp );
    printf( "Output:\n%s\ncharacter count = %d\n",
            buffer, j );
}
Output:
   String:    computer
   Character: l
   Integer:   35
   Real:      1.732053
character count = 79
Voorbeeld: Verwerking van foutcodes
// crt_swprintf_p.c
// This is the wide character example which
// also demonstrates _swprintf_p returning
// error code.
#include <stdio.h>
#define BUFFER_SIZE 100
int main( void )
{
    wchar_t buffer[BUFFER_SIZE];
    int     len;
    len = _swprintf_p(buffer, BUFFER_SIZE, L"%2$s %1$d",
                      0, L" marbles in your head.");
    _printf_p( "Wrote %d characters\n", len );
    // _swprintf_p fails because string contains WEOF (\xffff)
    len = _swprintf_p(buffer, BUFFER_SIZE, L"%s",
                      L"Hello\xffff world" );
    _printf_p( "Wrote %d characters\n", len );
}
Wrote 24 characters
Wrote -1 characters
Zie ook
              Stream I/O-
              
              _fprintf_p, , , _fprintf_p_l_fwprintf_p_fwprintf_p_l
              
              fprintf, , , _fprintf_lfwprintf_fwprintf_l
              
              _printf_p, , , _printf_p_l_wprintf_p_wprintf_p_l
              
              printf, , , _printf_lwprintf_wprintf_l
              
              sprintf
              swprintf, _sprintf_l, _swprintf_l__swprintf_l
              
              scanf, , , _scanf_lwscanf_wscanf_l
              
              sscanf, , , _sscanf_lswscanf_swscanf_l
              
              sscanf_s, , , _sscanf_s_lswscanf_s_swscanf_s_l
              
              vprintf functies
              
              printf_p Positionele parameters