Entrada e saída
Formate a saída com precisão usando o printf e leia o que o usuário digita com o scanf.
- Formatar números com largura e precisão no
printf - Ler números do usuário com
scanfe& - Verificar se a entrada foi realmente lida
Os programas ficam interessantes quando respondem a uma entrada. A biblioteca padrão do C dá a você o printf para escrever texto formatado e o scanf para lê-lo, os dois de <stdio.h>.
Especificadores de formato do printf
O printf recebe uma string de formato seguida de valores. Cada especificador % no formato é substituído pelo próximo valor, então os tipos precisam combinar:
| Especificador | Para | Exemplo de saída |
|---|---|---|
%d | int | 42 |
%f | double | 3.140000 |
%.2f | double, 2 casas decimais | 3.14 |
%c | char | A |
%s | string | hello |
%5d | int, preenchido até a largura 5 | 42 |
%-5d | int, alinhado à esquerda na largura 5 | 42 |
%05d | int, preenchido com zeros | 00042 |
1#include <stdio.h>
2
3int main(void) {
4 printf("%-8s%6s\n", "Item", "Price");
5 printf("%-8s%6.2f\n", "Coffee", 3.5);
6 printf("%-8s%6.2f\n", "Bagel", 2.25);
7 return 0;
8}Item Price Coffee 3.50 Bagel 2.25
Lendo a entrada com o scanf
O scanf usa o mesmo tipo de string de formato, mas ele escreve nas suas variáveis. Para deixá-lo fazer isso, você passa o endereço de cada variável com &. (Você vai aprender exatamente o que são endereços na aula de ponteiros; por enquanto, lembre: o scanf precisa de & na frente de variáveis int, double e char.)
1#include <stdio.h>
2
3int main(void) {
4 int number;
5 printf("Enter a number: ");
6 if (scanf("%d", &number) != 1) {
7 printf("That was not a number.\n");
8 return 1;
9 }
10 printf("Twice that is %d\n", number * 2);
11 return 0;
12}Dois detalhes que vale copiar em todo programa que você escrever:
- O
scanfdevolve quantos valores conseguiu ler. Se o usuário digitarabcquando você pediu%d, ele devolve 0 e deixanumberintacto. Verifique. - Para
double, oscanfusa%lf(e não%f, que é parafloat). Este é um dos poucos lugares em queprintfescanfdiferem.
Lendo vários valores
scanf("%d %d", &a, &b) lê dois inteiros separados por qualquer espaço em branco - espaços ou quebras de linha. Nos exercícios desta página, a entrada é fornecida para você (como um arquivo redirecionado para o seu programa), então você pode se concentrar na lógica.
Principais conclusões
Os especificadores do
printfprecisam combinar com os tipos dos valores:%dint,%fdouble,%cchar,%sstring. Largura e precisão vão entre o%e a letra (%6.2f).O
scanfprecisa do endereço de cada variável (&x) e usa%lfparadouble.O
scanfdevolve quantos valores leu - verifique.
Quiz da aula
5 perguntas · aprovação com 4 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: escreva código em C
Estes exercícios rodam de verdade. Escreva o programa, clique em “Executar testes” e leia o que o compilador informa: aprender a ler as mensagens do compilador é metade do aprendizado de C.
Some dois números
Leia dois inteiros da entrada e imprima a soma deles neste formato:
3 + 4 = 7A entrada são dois números separados por um espaço.
- 3 e 4
- -10 e 25
Seu código é compilado com gcc 14 (-Wall -Wextra) e executado no Compiler Explorer (godbolt.org), um serviço público gratuito.
Conversor de temperatura
Leia uma temperatura em Celsius (um número decimal) e imprima-a em Fahrenheit com uma casa decimal. F = C × 9 / 5 + 32.
21.5C = 70.7F- 21.5 C
- -40 C
- 100 C
Seu código é compilado com gcc 14 (-Wall -Wextra) e executado no Compiler Explorer (godbolt.org), um serviço público gratuito.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…