Compartilhar via


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 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 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çaObservaçã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

Diretivas de sinalizador

Especificação de largura printf

Especificação da precisão

Especificação de arquivo

_set_output_format