Caracteres de campo de tipo printf
Em uma especificação de formato, o caractere de type é um especificador de conversão que especifica se o argumento correspondente deve ser interpretado como um caractere, uma cadeia de caracteres, um ponteiro, um inteiro, ou um número de ponto flutuante. O caractere de type é o único campo obrigatório da especificação de formato, e aparece depois de todos os campos opcionais.
Os argumentos que seguem a cadeia de caracteres de formato são interpretados de acordo com o caractere de type correspondente e o prefixo opcional de tamanho . As conversões de tipos de caractere char e wchar_t são especificadas usando c ou C, e o byte único e o byte ou várias cadeias de caracteres amplas são especificados usando s ou S, dependendo da função de formatação está sendo usada. Argumentos e de caractere da cadeia de caracteres que são especificados usando c e s é interpretado como char e char* pelas funções de família de printf , ou como wchar_t e wchar_t* pelas funções de família de wprintf . Argumentos e de caractere da cadeia de caracteres que são especificados usando C e S é interpretado como wchar_t e wchar_t* pelas funções de família de printf , ou como char e char* pelas funções de família de wprintf .
O inteiro tipos como short, int, long, long long, e as variantes de unsigned , são especificadas usando d, i, o, u, x, e X. Os tipos de ponto flutuante como float, double, e long double, são especificados usando a, A, e, E, f, g, e G. Por padrão, a menos que sejam alterados por um prefixo do tamanho do campo de size , os argumentos inteiros são coagidos ao tipo de int , e os argumentos de ponto flutuante são coagidos a double. Em sistemas de 64 bits, int é um valor de 32 bits; consequentemente, inteiros de 64 bits serão truncados quando são formatados para saída a menos que um prefixo de size de ll ou de I64 é usado. Tipos de ponteiro que são especificados pelo uso de p o comprimento padrão para a plataforma.
Dica
C, S, e caracteres de tipo de Z , e o comportamento de caracteres de tipo de c e de s quando usados com as funções de printf e de wprintf , são extensões da Microsoft e não são ANSI compatível.Visual C++ não oferece suporte ao caractere de tipo de F .
caracteres de campo do tipo de printf
Caractere do tipo |
Argumento |
Formato de saída |
---|---|---|
c |
Caractere |
Quando usado com printf funções, especifica um caractere de byte único; quando usado com wprintf funções, especifica um caractere largo. |
C |
Caractere |
Quando usado com printf funções, especifica um caractere largo; quando usado com wprintf funções, especifica um caractere de byte único. |
d |
Integer |
Inteiro decimal assinado. |
i |
Integer |
Inteiro decimal assinado. |
o |
Integer |
Octal inteiro não assinado. |
u |
Integer |
Inteiro decimal não assinado. |
x |
Integer |
Inteiro hexadecimal sem assinatura; use “abcdef.” |
X |
Integer |
Inteiro hexadecimal sem assinatura; use “ABCDEF”. |
e |
De ponto flutuante |
O valor assinado que tem o formato [] –d.dddd e []sinaldd[d] onde d é um dígito decimal, dddd é um ou mais dígitos decimais, dd[d] são dois ou três dígitos decimais segundo formato de saída e o tamanho do expoente, e o sinal é + ou -. |
E |
De ponto flutuante |
Idêntico ao formato exceto que a E de e em vez de e apresenta o expoente. |
f |
De ponto flutuante |
Valor assinado que tem o formato [] –dddd.dddd, onde dddd é um ou mais dígitos decimais. O número de dígitos antes do ponto decimal depender do valor de número, e o número de dígitos após o ponto decimal depende de precisão solicitada. |
g |
De ponto flutuante |
Os valores assinados são exibidos em f ou formato de e , o que é mais compacta do valor e a precisão dados. O formato de e é usado apenas quando o expoente do valor é menor que – 4 ou maior ou igual ao argumento de precision . Zeros à direita são truncados, e o ponto decimal será exibida apenas se um ou mais dígitos a seguir. |
G |
De ponto flutuante |
Idêntico ao formato de g , exceto que a E, em vez de e, o introduz o expoente (onde apropriado). |
a |
De ponto flutuante |
O valor de ponto flutuante de precisão dupla hexadecimal assinado que tem o formato [] −0xh.hhhh p±dd, onde h.hhhh são os dígitos hexadecimais (que usam letras minúsculas) da mantissa, e dd é um ou mais dígitos para o expoente. A precisão especifica o número de dígitos após o ponto. |
A |
De ponto flutuante |
O valor de ponto flutuante de precisão dupla hexadecimal assinado que tem o formato [] −0Xh.hhhh P±dd, onde h.hhhh são os dígitos hexadecimais (que usam letras principais) da mantissa, e dd é um ou mais dígitos para o expoente. A precisão especifica o número de dígitos após o ponto. |
n |
Ponteiro para o inteiro |
Número de caracteres que são gravados com êxito até agora ao fluxo ou no buffer. Este valor é armazenado no inteiro cujo endereço é determinado pelo argumento. Consulte a observação de segurança posteriormente neste artigo. |
p |
Tipo de ponteiro |
Exibe o argumento como um endereço de dígitos hexadecimais. |
s |
Cadeia de caracteres |
Quando usada com funções de printf , especificar uma cadeia de caracteres de byte único ou de vários bytes; quando usado com wprintf funções, especificar uma cadeia de caracteres de ampla caractere. Os caracteres são exibidos até o primeiro caractere nulo ou até precision o valor for atingido. |
S |
Cadeia de caracteres |
Quando usado com printf funções, especificar uma cadeia de caracteres de ampla caractere; quando usada com funções de wprintf , especificar uma cadeia de caracteres de byte único ou de vários bytes. Os caracteres são exibidos até o primeiro caractere nulo ou até precision o valor for atingido. |
Z |
ANSI_STRING ou estrutura de UNICODE_STRING |
Quando o endereço ANSI_STRING do ou UNICODE_STRING da estrutura for passado como o argumento, exibe a cadeia de caracteres contida no buffer que é apontado pelo campo de Buffer da estrutura. Use um prefixo do modificador de comprimento de w para especificar UNICODE_STRING argumento- por exemplo, %wZ. O campo de Length da estrutura deve ser definido como o comprimento, em bytes, de cadeia de caracteres. O campo de MaximumLength da estrutura deve ser definido como o comprimento, em bytes, do buffer. Normalmente, o caractere de tipo de Z é usado somente no driver que a depuração funciona usando uma especificação de formato, como dbgPrint e kdPrint. |
Se o argumento que corresponde a um especificador de ponto flutuante de conversão é infinito, indefinido, ou NAN, a tabela a seguir lista as saídas formatados.
Valor |
Saída |
---|---|
+ infinito |
1.#INFaleatório-dígitos |
– infinito |
– 1.#INFaleatório-dígitos |
Indefinido (mesmo que NaN silencioso) |
dígito.#INDdígitos aleatórios |
NAN |
dígito.#NANdígitos aleatórios |
Dica
Se o campo de Buffer do argumento que corresponde a %Z, ou do argumento que corresponde a %s ou a %S, é um ponteiro nulo, “(zero)” será exibido.
Dica
Em todos os formatos exponenciais, o número máximo de dígitos do expoente para exibir tem três.Usando a função de _set_output_format , você pode definir o número de dígitos exibidos a dois mas a expanda a três se solicitado pelo tamanho do expoente.
Observação de segurança |
---|
Como o formato de %n é inerentemente certeza, é desabilitado por padrão.Se %n é encontrado em uma cadeia de caracteres de formato, o manipulador inválido do parâmetro será chamado, conforme descrito em Validação do parâmetro.Para habilitar o suporte de %n , consulte _set_printf_count_output. |
Consulte também
Referência
printf, _printf_l, wprintf, _wprintf_l
Sintaxe de especificação de formato: funções printf e and wprintf