printf (Caracteres de campo de tipo)
En una especificación de formato, el carácter de type es un especificador de conversión que especifica si el argumento correspondiente debe interpretarse como un carácter, una cadena, un puntero, un entero, o número de punto flotante. El carácter de type es el único campo necesario de la especificación de formato, y aparece después de cualquier campo opcional.
Los argumentos que siguen la cadena de formato se interpretan como el carácter correspondiente de type y el prefijo opcional de tamaño . Las conversiones de tipos de caracteres char y wchar_t se especifican mediante c o C, y el solo- byte y el multi- byte o cadenas de caracteres anchos se especifican mediante s o S, dependiendo de qué se utiliza la función de formato. Carácter y argumentos de cadena que se especifican con c y se interpreta s mientras se trabaja char y char* de la familia de printf , o como funciona wchar_t y wchar_t* de la familia de wprintf . Carácter y argumentos de cadena que se especifican con C y se interpreta S mientras se trabaja wchar_t y wchar_t* de la familia de printf , o como funciona char y char* de la familia de wprintf .
Especificar los tipos enteros como short, int, long, long long, y sus variantes de unsigned , mediante d, i, o, u, x, y X. Los tipos de punto flotante como float, double, y long double, se especifican mediante a, A, e, E, f, g, y G. De forma predeterminada, a menos que sean modificados por un prefijo de longitud de campo de size , los argumentos enteros se convierten al tipo de int , y los argumentos de punto flotante se convierten en double. En sistemas de 64 bits, int es un valor de 32 bits; por consiguiente, los enteros de 64 bits se truncados cuando se da formato para la salida a menos que un prefijo de size de ll o de I64 se utilice. Tipos de puntero especificados por el uso de p la longitud predeterminada para la plataforma.
Nota
C, S, y los caracteres de tipo de Z , y el comportamiento de c y s caracteres de tipo cuando se utilizan con las funciones de printf y de wprintf , son extensiones de Microsoft y no son compatibles con ANSI.Visual C++ no admite el carácter de tipo de F .
caracteres de campo del tipo printf
Carácter de tipo |
Argumento |
Formato de salida |
---|---|---|
c |
Carácter |
Cuando se utiliza con printf funciona, especifica un carácter de solo- byte; cuando se utiliza con wprintf funciona, especifica un carácter ancho. |
C |
Carácter |
Cuando se utiliza con printf funciona, especifica un carácter ancho; cuando se utiliza con wprintf funciona, especifica un carácter de solo- byte. |
d |
Integer |
Entero decimal con signo. |
i |
Integer |
Entero decimal con signo. |
o |
Integer |
Entero octal sin signo. |
u |
Integer |
Entero decimal sin signo. |
x |
Integer |
Entero hexadecimal sin signo; utiliza “abcdef”. |
X |
Integer |
Entero hexadecimal sin signo; utiliza “ABCDEF”. |
e |
Punto flotante |
El valor signed que tiene el formato [–]d.dddd e [sign]dd[d] donde es un dígito decimal d , dddd es uno o más dígitos decimales, dd[d] es dos o tres dígitos decimales dependiendo de formato de salida y tamaño de exponente, y el signo es + o –. |
E |
Punto flotante |
Idéntico al formato salvo que E de e en lugar de e presenta el exponente. |
f |
Punto flotante |
Valor con signo que tiene el formato [–]dddd.dddd, donde uno o más dígitos decimales dddd . El número de dígitos que hay delante del separador decimal depende de la magnitud del número y el número de dígitos que hay detrás del separador decimal depende de la precisión solicitada. |
g |
Punto flotante |
Los valores firmado se muestran en f o formato de e , lo que sea más compacto para el valor y la precisión especificados. Se utiliza el formato de e sólo cuando el exponente de valor es menor que – 4 o mayor o igual que el argumento de precision . Se truncan los ceros finales, y el separador decimal sólo aparece si uno o más dígitos se siguen. |
G |
Punto flotante |
Idéntico al formato de g , salvo que E, en lugar de e, presenta el exponente (en su caso). |
a |
Punto flotante |
El valor de punto flotante de precisión doble hexadecimal con signo que tiene el formato [−]0xh.hhhh p±dd, donde los dígitos h.hhhh hexadecimales (con minúsculas) de la mantisa, y dd son uno o más dígitos en el exponente. La precisión especifica el número de dígitos después del punto. |
A |
Punto flotante |
El valor de punto flotante de precisión doble hexadecimal con signo que tiene el formato [−]0Xh.hhhh P±dd, donde los dígitos h.hhhh hexadecimales (con letras mayúsculas) de la mantisa, y dd son uno o más dígitos en el exponente. La precisión especifica el número de dígitos después del punto. |
n |
Puntero a integer |
Número de caracteres que se escribe correctamente hasta ahora a la secuencia o el búfer. Este valor se almacena en el entero cuya proporcionan dirección como argumento. Vea la Nota de seguridad más adelante en este artículo. |
p |
Tipo de puntero |
Muestra el argumento como dirección de dígitos hexadecimales. |
s |
String |
Cuando se utiliza con funciones de printf , especifica una cadena de caracteres de solo- byte o de multi- byte; cuando se utiliza con wprintf funciona, especifica una cadena de caracteres. Los caracteres se muestran hasta el primer carácter null o hasta precision se alcanza el valor. |
S |
String |
Cuando se utiliza con printf funciona, especifica una cadena de caracteres; cuando se utiliza con funciones de wprintf , especifica una cadena de caracteres de solo- byte o de multi- byte. Los caracteres se muestran hasta el primer carácter null o hasta precision se alcanza el valor. |
Z |
ANSI_STRING o estructura de UNICODE_STRING |
Cuando se pasa la dirección de ANSI_STRING o UNICODE_STRING estructura como argumento, muestra la cadena incluida en el búfer comunicado por al campo de Buffer de la estructura. Utilice un prefijo de modificador de la longitud de w para especificar UNICODE_STRING argumento- para el ejemplo, %wZ. El campo de Length de estructura se debe establecer en la longitud, en bytes, de la cadena. El campo de MaximumLength de estructura se debe establecer en la longitud, en bytes, del búfer. Normalmente, el carácter de tipo de Z sólo se utiliza en controlador que la depuración funciona que utiliza una especificación de formato, como dbgPrint y kdPrint. |
Si el argumento correspondiente a un especificador flotante de conversión es infinito, indefinido, o NAN, la tabla siguiente muestra el resultado.
Valor |
Resultados |
---|---|
+ infinito |
1.#INFaleatorio-dígitos |
– infinity |
– 1.#INFaleatorio-dígitos |
No definido (igual que silenciosamente NaN) |
digitrandom-dígitos. #IND |
NAN |
digitrandom-dígitos. #NAN |
Nota
Si el campo de Buffer de argumento que corresponde a %Z, o el argumento que corresponde a %s o a %S, es un puntero NULL, “(null)” se mostrará.
Nota
En todos los formatos exponenciales, el número predeterminado de dígitos del exponente a mostrar es tres.Mediante la función de _set_output_format , puede establecer el número de dígitos mostrados a dos pero a expandir a tres si es solicitado por el tamaño del exponente.
Nota sobre la seguridad |
---|
Dado que el formato de %n es inherentemente seguro, está deshabilitada de forma predeterminada.Si %n se encuentra en una cadena de formato, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Para habilitar la compatibilidad con %n , vea _set_printf_count_output. |
Vea también
Referencia
printf, _printf_l, wprintf, _wprintf_l
Sintaxis de especificación de formato: Funciones printf y wprintf