A função printf é parte de um conjunto de funções pré-definidas armazenadas em uma biblioteca padrão de rotinas da linguagem C. Ela permite apresentar na tela os valores de qualquer tipo de dado. Para tanto, printf utiliza o mecanismo de formatação, que permite traduzir a representação interna de variáveis para a representação ASCII que pode ser apresentada na tela.
O primeiro argumento de printf é um string de controle, uma seqüência de caracteres entre aspas. Esta string, que sempre deve estar presente, pode especificar através de caracteres especiais (as seqüências de conversão) quantos outros argumentos estarão presentes nesta invocação da função. Estes outros argumentos serão variáveis cujos valores serão formatados e apresentados na tela. Por exemplo, se o valor de uma variável inteira x é 12, então a execução da função
printf("Valor de x = %d", x);imprime na tela a frase Valor de x = 12. Se y é uma variável do tipo caráter com valor 'A', então a execução de
printf("x = %d e y = %c\n", x, y);imprime na tela a frase x = 12 e y = A seguida pelo caráter de nova linha (
\n
), ou seja, a
próxima saída para a tela aconteceria na linha seguinte.
Observe que a seqüência de conversão pode ocorrer dentro de
qualquer posição dentro do string de controle.
A função printf não tem um número fixo de argumentos. Em sua forma mais simples, pelo menos um argumento deve estar presente -- a string de controle. Uma string de controle sem nenhuma seqüência de conversão será literalmente impressa na tela. Com variáveis adicionais, a única forma de saber qual o número de variáveis que será apresentado é por inspeção da string de controle. Desta forma, cuidado deve ser tomado para que o número de variáveis após a string de controle esteja de acordo com o número de seqüências de conversão presente na string de controle.
Além de ter o número correto de argumentos e seqüências de
conversão, o tipo de cada variável deve estar de acordo com a
seqüência de conversão especificada na string de controle. A
seqüência de conversão pode ser reconhecida dentro da string
de controle por iniciar sempre com o caráter %
.
As principais seqüências de conversão para variáveis caracteres e inteiras são:
%
, como em %12d
para especificar que o número
decimal terá reservado um espaço de doze caracteres para sua
representação. Se a largura de campo for negativa, então o
número será apresentado alinhado à esquerda ao invés
do comportamento padrão de alinhamento à direita. Para a
conversão de variáveis do tipo long, o caráter
l
também deve ser especificado, como
em %ld
.
Para converter variáveis em ponto flutuante, as seqüências são:
%f
e %e
.
%12.3f
especifica que a variável será apresentada em um campo de
doze caracteres com uma precisão de três dígitos após
o ponto decimal.
Finalmente, se a variável a ser apresentada é uma seqüência de caracteres
(uma string), então o formato de conversão %s
pode ser
utilizado. Para apresentar o caráter %
, a seqüência %%
é utilizada.