Printf: lendo os valores de usuário

O programa anterior é bom, mas seria melhor se ele lesse os valores 5 e 7 inseridos pelo usuário, em vez de usar constantes. Em vez disso, tente este programa:
#include <stdio.h>    

int main()
{
      int a, b, c;
      printf("Entre o primeiro valor:");
      scanf("%d", &a);
      printf("Entre o segundo valor:");
      scanf("%d", &b);
      c = a + b;
      printf("%d + %d = %d\n", a, b, c);  
      return 0;
  } 

Eis como este programa funciona ao ser executado:


Faça as alterações, depois compile e rode o programa para certificar-se de que funciona. Observe que scanf usa as mesmas strings de formato que printf (digite man scanf para mais informação). Observe também o & na frente de a e b. Este é o operador de endereço em C: ele retorna o endereço da variável (isto não fará sentido até aprendermos sobre os ponteiros). Você tem de usar o operador & em scanf em qualquer variável do tipo char, int ou float, bem como tipos de estrutura (que discutiremos em breve). Se excluir o operador &, você receberá um erro ao executar o programa. Tente executá-lo para ver que tipo de erro ocorre.

Vamos ver algumas variações para entender printf completamente. Eis uma instrução simples de printf:

      printf("Hello");  

Esta chamada para printf tem uma string de formatos que diz ao printf para enviar a palavra "Hello" para a saída padrão. Compare-a com:

      printf("Hello\n");

A diferença entre as duas é que a segunda versão exibe a palavra "Hello" seguida de uma quebra de linha.

As linha seguintes mostram como exibir o valor de uma variável usando printf.

      printf("%d", b);  

O %d é uma expressão de controle que será substituída pelo valor da variável b quando a instrução printf for executada. Freqüentemente, você vai desejar incluir o valor entre outras palavras. Uma forma de fazer isso é:

    printf("A temperatura é ");
    printf("%d", b);
    printf(" degrees");

Um modo mais fácil de dizer isso é:

      printf("A temperatura é %d graus\n", b);

Você também pode usar múltiplas expressões de controle %d em uma instrução printf:

      printf("%d + %d = %d\n", a, b, c);

Na instrução printf, é extremamente importante que o número de operadores na string de formato corresponda exatamente ao número e tipo de variáveis que a seguem. Por exemplo, se a string de formatos contém três operadores %d, então ela deve ser seguida por exatamente três parâmetros do mesmo tipo e ordem que aqueles especificados pelos operadores.

Você pode imprimir todos os símbolos normais na linguagem C com printf usando expressões de controle diferentes:

  • int (valores inteiros) usam %d
  • float (valores de ponto flutuante) usam %f
  • char (valores de caractere simples) usam %c
  • strings de caracteres (matrizes de caracteres, discutiremos mais tarde) usam %s
Você pode aprender mais sobre as nuances do printf em uma máquina UNIX digitando man 3 printf. Qualquer outro compilador de C que você utilize provavelmente virá acompanhado de um manual ou arquivo de ajuda que contém uma descrição do printf.