printf, _printf_l, wprintf, _wprintf_lprintf, _printf_l, wprintf, _wprintf_l

Imprime el resultado con formato en la cadena de salida estándar.Prints formatted output to the standard output stream. Hay versiones más seguras de estas funciones disponibles; vea printf_s, _printf_s_l, wprintf_s, _wprintf_s_l.More secure versions of these functions are available; see printf_s, _printf_s_l, wprintf_s, _wprintf_s_l.

SintaxisSyntax

int printf(
   const char *format [,
   argument]...
);
int _printf_l(
   const char *format,
   locale_t locale [,
   argument]...
);
int wprintf(
   const wchar_t *format [,
   argument]...
);
int _wprintf_l(
   const wchar_t *format,
   locale_t locale [,
   argument]...
);

ParámetrosParameters

formatformat
Control de formato.Format control.

argumentargument
Argumentos opcionales.Optional arguments.

localelocale
Configuración regional que se va a usar.The locale to use.

Valor devueltoReturn Value

Devuelve el número de caracteres impreso o un valor negativo si se produce un error.Returns the number of characters printed, or a negative value if an error occurs. Si Format es null, se invoca el controlador de parámetros no válidos, tal y como se describe en validación de parámetros.If format is NULL, the invalid parameter handler is invoked, as described in Parameter Validation. Si la ejecución puede continuar, la función devuelve-1 y establece errno en EINVAL.If execution is allowed to continue, the function returns -1 and sets errno to EINVAL. Si se encuentra EOF (0xFFFF) en el argumento, la función devuelve-1.If EOF (0xFFFF) is encountered in argument, the function returns -1.

Para obtener información sobre errno y códigos de error, vea _doserrno, errno, _sys_errlist y _sys_nerr.For information on errno and error codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.

ObservacionesRemarks

La función printf da formato e imprime una serie de caracteres y valores en el flujo de salida estándar, stdout.The printf function formats and prints a series of characters and values to the standard output stream, stdout. Si los argumentos siguen a la cadena de formato , la cadena de formato debe contener especificaciones que determinen el formato de salida de los argumentos.If arguments follow the format string, the format string must contain specifications that determine the output format for the arguments. printf y fprintf se comportan exactamente igual, salvo que printf escribe la salida en stdout en lugar de en un destino de tipo File.printf and fprintf behave identically except that printf writes output to stdout rather than to a destination of type FILE.

wprintf es una versión con caracteres anchos de printf; Format es una cadena de caracteres anchos.wprintf is a wide-character version of printf; format is a wide-character string. wprintf y printf se comportan exactamente igual si la secuencia se abre en modo ANSI.wprintf and printf behave identically if the stream is opened in ANSI mode. printf no admite actualmente la salida en un flujo Unicode.printf does not currently support output into a UNICODE stream.

Las versiones de estas funciones con el sufijo _L son idénticas, salvo que utilizan el parámetro de configuración regional que se pasa en lugar de la configuración regional del subproceso actual.The versions of these functions with the _l suffix are identical except that they use the locale parameter passed in instead of the current thread locale.

Asignaciones de rutina de texto genéricoGeneric-Text Routine Mappings

Rutina TCHAR.HTCHAR.H routine _UNICODE y _MBCS no definidos_UNICODE & _MBCS not defined _MBCS definido_MBCS defined _unicode definido_unicode defined
_tprintf_tprintf printfprintf printfprintf wprintfwprintf

El argumento de formato consta de caracteres ordinarios, secuencias de escape y (si los argumentos siguen formato) Especificaciones de formato.The format argument consists of ordinary characters, escape sequences, and (if arguments follow format) format specifications. Los caracteres ordinarios y las secuencias de escape se copian en stdout en orden de aparición.The ordinary characters and escape sequences are copied to stdout in order of their appearance. Por ejemplo, la línea:For example, the line:

printf("Line one\n\t\tLine two\n");

genera el resultado:produces the output:

Line one
        Line two

Las Especificaciones de formato siempre comienzan con un signo de porcentaje ( % ) y se leen de izquierda a derecha.Format specifications always begin with a percent sign (%) and are read left to right. Cuando printf encuentra la primera especificación de formato (si existe), convierte el valor del primer argumento después del formato y lo envía en consecuencia.When printf encounters the first format specification (if any), it converts the value of the first argument after format and outputs it accordingly. La segunda especificación de formato genera el segundo argumento que se convertirá y saldrá, y así sucesivamente.The second format specification causes the second argument to be converted and output, and so on. Si hay más argumentos que especificaciones de formato, se omiten los argumentos adicionales.If there are more arguments than there are format specifications, the extra arguments are ignored. Los resultados son indefinidos si no hay suficientes argumentos para todas las especificaciones de formato.The results are undefined if there are not enough arguments for all the format specifications.

Importante

Asegúrese de que format no es una cadena definida por el usuario.Ensure that format is not a user-defined string.

Asignaciones de rutina de texto genéricoGeneric-Text Routine Mappings

Rutina Tchar.hTchar.h routine _UNICODE y _MBCS no definidos_UNICODE and _MBCS not defined _MBCS definido_MBCS defined _UNICODE definido_UNICODE defined
_tprintf_tprintf printfprintf printfprintf wprintfwprintf
_tprintf_l_tprintf_l _printf_l_printf_l _printf_l_printf_l _wprintf_l_wprintf_l

RequisitosRequirements

RutinaRoutine Encabezado necesarioRequired header
printf, _printf_lprintf, _printf_l <stdio.h>
wprintf, _wprintf_lwprintf, _wprintf_l <stdio.h> o <wchar.h><stdio.h> or <wchar.h>

La consola no se admite en aplicaciones de Plataforma universal de Windows (UWP).The console is not supported in Universal Windows Platform (UWP) apps. Los identificadores de flujo estándar que están asociados a la consola, stdin, stdout y stderr deben redirigirse antes de que las funciones en tiempo de ejecución de C puedan usarlos en aplicaciones para UWP.The standard stream handles that are associated with the console, stdin, stdout, and stderr, must be redirected before C run-time functions can use them in UWP apps. Para obtener información adicional sobre compatibilidad, consulte Compatibilidad.For additional compatibility information, see Compatibility.

Importante

A partir de la versión 2004 de Windows 10 (compilación 19041), la printf familia de funciones imprime los números de punto flotante que se representarán exactamente según las reglas IEEE 754 para el redondeo.Starting in Windows 10 version 2004 (build 19041), the printf family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. En versiones anteriores de Windows, los números de punto flotante que se representaban exactamente finales de ' 5 ' siempre se redondeaban.In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 indica que deben redondear al dígito par más cercano (también conocido como "redondeo bancario").IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). Por ejemplo, 1,5 y 2,5 se deben redondear a 2.For example, both 1.5 and 2.5 should round to 2. Anteriormente, 1,5 se redondeaba a 2 y 2,5 se redondeaba a 3.Previously, 1.5 would round to 2 and 2.5 would round to 3. Este cambio solo afecta a los números que se van a representar exactamente.This change only affects exactly representable numbers. Por ejemplo, 2,35 (que, cuando se representa en memoria, está más cerca de 2.35000000000000008) continúa redondeando a 2,4.For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. El redondeo realizado por estas funciones ahora también respeta el modo de redondeo de punto flotante establecido por fesetround.Rounding done by these functions now also respects the floating point rounding mode set by fesetround. Anteriormente, el redondeo siempre escogió FE_TONEAREST comportamiento.Previously, rounding always chose FE_TONEAREST behavior. Este cambio solo afecta a los programas compilados con Visual Studio 2019, versión 16,2 y versiones posteriores.This change only affects programs built using Visual Studio 2019 version 16.2 and later. Para usar el comportamiento de redondeo de punto flotante heredado, vincule con legacy_stdio_float_rounding. obj.To use the legacy floating point rounding behavior, link with legacy_stdio_float_rounding.obj.

EjemploExample

// crt_printf.c
// This program uses the printf and wprintf functions
// to produce formatted output.

#include <stdio.h>

int main( void )
{
   char     ch = 'h',
            *string = "computer";
   wchar_t  wch = L'w',
            *wstring = L"Unicode";
   int      count = -9234;
   double   fp = 251.7366;

   // Display integers
   printf( "Integer formats:\n"
           "   Decimal: %d  Justified: %.6d  "
           "Unsigned: %u\n",
           count, count, count, count );

   // Display decimals
   printf( "Decimal %d as:\n   Hex: %Xh  "
           "C hex: 0x%x  Octal: %o\n",
            count, count, count, count );

   // Display in different radixes
   printf( "Digits 10 equal:\n   Hex: %i  "
           "Octal: %i  Decimal: %i\n",
            0x10, 010, 10 );

   // Display characters
   printf("Characters in field (1):\n"
          "%10c%5hc%5C%5lc\n",
          ch, ch, wch, wch);
   wprintf(L"Characters in field (2):\n"
           L"%10C%5hc%5c%5lc\n",
           ch, ch, wch, wch);

   // Display strings
   printf("Strings in field (1):\n%25s\n"
          "%25.4hs\n   %S%25.3ls\n",
          string, string, wstring, wstring);
   wprintf(L"Strings in field (2):\n%25S\n"
           L"%25.4hs\n   %s%25.3ls\n",
           string, string, wstring, wstring);

   // Display real numbers
   printf("Real numbers:\n   %f %.2f %e %E\n",
          fp, fp, fp, fp );

   // Display pointer
   printf( "\nAddress as:   %p\n", &count);
}

Salida de ejemploSample Output

Integer formats:
   Decimal: -9234  Justified: -009234  Unsigned: 4294958062
Decimal -9234 as:
   Hex: FFFFDBEEh  C hex: 0xffffdbee  Octal: 37777755756
Digits 10 equal:
   Hex: 16  Octal: 8  Decimal: 10
Characters in field (1):
         h    h    w    w
Characters in field (2):
         h    h    w    w
Strings in field (1):
                 computer
                     comp
   Unicode                      Uni
Strings in field (2):
                 computer
                     comp
   Unicode                      Uni
Real numbers:
   251.736600 251.74 2.517366e+002 2.517366E+002

Address as:   0012FF3C

Consulta tambiénSee also

Sintaxis de especificación de formato: funciones printf y wprintfFormat Specification Syntax: printf and wprintf Functions
Compatibilidad de punto flotanteFloating-Point Support
E/S de secuenciaStream I/O
Configuración regionalLocale
fopen, _wfopenfopen, _wfopen
_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l
scanf, _scanf_l, wscanf, _wscanf_lscanf, _scanf_l, wscanf, _wscanf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, _ _swprintf_lsprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
Funciones de vprintf (vprintf Functions
_set_output_format_set_output_format