next up previous contents
Next: Tipos agregados e derivados Up: Invocação de funções Previous: Invocação de funções   Sumário


A função printf

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:

%c
imprime o conteúdo da variável com representação ASCII;

%d
imprime o conteúdo da variável com representação decimal com sinal;

%u
imprime o conteúdo da variável com representação decimal sem sinal;

%o
imprime o conteúdo da variável com representação octal sem sinal;

%x
imprime o conteúdo da variável com representação hexadecimal sem sinal.
Uma largura de campo pode ser opcionalmente especificada logo após o caráter %, 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
imprime o conteúdo da variável com representação com ponto decimal;

%e
imprime o conteúdo da variável com representação em notação científica (exponencial);

%g
formato geral, escolhe a representação mais curta entre %f e %e.
Como para a representação inteira, uma largura de campo pode ser especificada para números reais. Por exemplo, %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.


next up previous contents
Next: Tipos agregados e derivados Up: Invocação de funções Previous: Invocação de funções   Sumário
Ivan L. M. Ricarte 2003-02-14