Sintaxe de especificação de formato: funções printf e and wprintf
Descreve a sintaxe de argumentos de cadeia de caracteres de formato a printf, a wprintf, e as funções relacionadas. Versões mais seguras dessas funções estão disponíveis; para obter mais informações, consulte Recursos de segurança no CRT. Para obter informações sobre funções individuais, consulte a documentação para essas funções específicas. Para uma lista dessas funções, consulte E/S de fluxo.
Uma especificação de formato, que consiste em opcional e campos de associação, tem o seguinte formato:
%sinalizadores[] [] [largura.precisão] [{h | l | ll | w | I | I32 | I64}] tipo
Cada campo da especificação de formato é um caractere ou um número que indica um especificador específico da opção ou de conversão de formato. O caractere necessário de type especifica o tipo de conversão a ser aplicada a um argumento. flagsopcional, width, e os aspectos adicionais de formato de controle de campos de precision . Uma especificação de formato básico contém apenas o sinal de porcentagem e type caractere por exemplo, %s, que especifica uma conversão de cadeia de caracteres. Se um sinal de porcentagem é seguido por um caractere que não tem nenhum significado como um campo de formato, o caractere é copiado a saída inalteradas. Para imprimir um caractere de sinal porcentagem-, use %%.
Os campos de especificação de formato controlam os seguintes aspectos da conversão e a formatação de argumento:
type
Caractere necessário do especificador de conversão que determina se argument associado será interpretado como um caractere, uma cadeia de caracteres, um inteiro, ou um número de ponto flutuante. Para obter mais informações, consulte Caracteres de campo de tipo printf.flags
Caractere ou caracteres opcional que controlam a justificação de saída e saída de semáforo, espaços em branco, de zeros à esquerda, de pontos decimais, e de prefixos octais e hexadecimais. Para obter mais informações, consulte Diretivas de sinalizador. Mais de um sinalizador pode aparecer em uma especificação de formato, e os sinalizadores podem aparecer em qualquer ordem.width
Número decimal opcional que especifica o número mínimo de caracteres que são geradas. Para obter mais informações, consulte Especificação de largura printf.precision
Número decimal opcional que especifica o número máximo de caracteres que são impressos para cadeias de caracteres, o número de dígitos significativos ou o número de dígitos após o caractere de ponto decimal para valores de ponto flutuante, ou o número mínimo de dígitos que são impressos para valores inteiros. Para obter mais informações, consulte “como tipo de influência dos valores de precisão” em Especificação da precisão.h | l | ll | w | I | I32 | I64
Prefixos opcionais a type que especificam o tamanho do argumento correspondente. Para obter mais informações, consulte " tamanho dos prefixos” em Especificação de arquivo.
Observação de segurança |
---|
Certifique-se de que as cadeias de caracteres da especificação de formato não sejam definidos pelo usuário.Por exemplo, considere um programa que solicita ao usuário digitar um nome e armazenar a entrada em uma variável de cadeia de caracteres que é chamado name.Para imprimir name, não faça isso: printf( name ); /* Danger! If name contains "%s", program will crash */ Em vez disso, faça isso: printf( "%s", name ); |
Consulte também
Referência
printf, _printf_l, wprintf, _wprintf_l
printf_s, _printf_s_l, wprintf_s, _wprintf_s_l
Parâmetros posicionais printf_p