segunda-feira, 18 de fevereiro de 2008

A função printf()

No post Meu primeiro programa em C, apresentei o uso da função printf em sua forma mais ordinária. Aquela em que a utilizamos para apresentar mensagens fixas, como a apresentada abaixo.


printf("Uma mensagem para voce!");


Nessa forma não existem códigos de formatação.
Os códigos mais básicos servem para controlar tabulações, quebras de linhas, impressão de aspas, etc..., e são iniciados pela barra invertida seguida de um caractere.
A tabela abaixo apresenta esses códigos.

CódigoSignificado
\nQuebra de linha (Pula para a próxima linha)
\rRetrocede o cursor para o início da linha
\tInsere uma tabulação no texto
\bRetrocede o cursor uma posição
\"Imprime a aspas
\\Imprime uma barra invertida

Existem códigos de formatação para a impressão de variáveis. Não seria ótimo apresentar um número no meio de uma mensagem, por exemplo:


O numero 2 e par.


O programa que gera essa saída pode ser dado por:


001:  #include <stdio.h>
002:  #include <stdlib.h>
003:
004:  int main(int argc, char *argv[])
005:  {
006:    int num = 2;
007:
008:    printf("O numero %d e par\n", num);
009:    system("PAUSE");
010:    return 0;
011:  }


Esse raciocínio é válido para todos os tipos de dados. A tabela abaixo apresenta o código de formatação e o formato impresso:

CódigoFormatação
%cCaractere
%dinteiros com sinais (base decimal)
%iinteiros com sinais (base decimal)
%eNotação científica (e minúsculo)
%Enotação científica (E maiúsculo)
%fponto flutuante
%gusa %f ou %e, o que for mais curto graficamente
%Gusa %f ou %E, o que for mais curto graficamente
%oimprime um número em base octal
%scadeia de caracteres (string)
%uinteiros sem sinal
%ximprime um número na base hexadecimal. As letras serão minúsculas.
%Ximprime um número na base hexadecimal. As letras serão maiúsculas.
%pApresenta endereço de memória.

Se você é um pouco perspicaz estará se perguntando como fazer para imprimir o sinal de %. Isso é fácil, basta duplicar o sinal de percentual (%%) no printf.
Se você acha que acabou, aguarde o post sobre a formatação de precisão e campos utilizando o printf.

Nenhum comentário: