Dominando Entrada e Saída (I/O) em C: scanf() e printf() Explicados
Entrada e Saída (I/O) em C
Este tutorial orienta você no uso de scanf() para capturar entrada do usuário e printf() para apresentar saída, com exemplos claros e boas práticas.
Vídeo: Obtendo Entrada do Usuário em Programação C
Assista ao vídeo acompanhante para ver demonstrações ao vivo de scanf() em ação.
Saída em C
A função printf() é a ferramenta principal para enviar texto formatado ao console. Abaixo estão exemplos ilustrativos.
Exemplo 1: Saída Básica de Texto
#include <stdio.h> int main() { printf("C Programming"); return 0; }
Saída
C Programming
Este programa imprime uma string simples. Pontos-chave:
- A função
main()é obrigatória; a execução do programa começa aqui. - Inclua
stdio.hpara acessarprintf(). - O
return 0;opcional sinaliza conclusão bem-sucedida.
Exemplo 2: Saída de Inteiro
#include <stdio.h> int main() { int testInteger = 5; printf("Número = %d", testInteger); return 0; }
Saída
Número = 5
O especificador %d injeta o valor inteiro na string de saída.
Exemplo 3: Saída de Ponto Flutuante
#include <stdio.h> int main() { float number1 = 13.5; double number2 = 12.4; printf("number1 = %f\n", number1); printf("number2 = %lf", number2); return 0; }
Saída
number1 = 13.500000 number2 = 12.400000
Use %f para float e %lf para valores double.
Exemplo 4: Saída de Caractere
#include <stdio.h> int main() { char chr = 'a'; printf("caractere = %c", chr); return 0; }
Saída
caractere = a
Imprima um único caractere com %c.
Entrada em C
A função scanf() lê dados formatados da entrada padrão, tipicamente o teclado. Abaixo estão exemplos práticos.
Exemplo 5: Entrada/Saída de Inteiro
#include <stdio.h> int main() { int testInteger; printf("Digite um inteiro: "); scanf("%d", &testInteger); printf("Número = %d", testInteger); return 0; }
Saída
Digite um inteiro: 4 Número = 4
O operador de endereço & fornece a scanf() a localização de memória para armazenar a entrada do usuário.
Exemplo 6: Entrada/Saída de Float e Double
#include <stdio.h> int main() { float num1; double num2; printf("Digite um número: "); scanf("%f", &num1); printf("Digite outro número: "); scanf("%lf", &num2); printf("num1 = %f\n", num1); printf("num2 = %lf", num2); return 0; }
Saída
Digite um número: 12.523 Digite outro número: 10.2 num1 = 12.523000 num2 = 10.200000
Exemplo 7: Entrada/Saída de Caractere
#include <stdio.h> int main() { char chr; printf("Digite um caractere: "); scanf("%c", &chr); printf("Você digitou %c.", chr); return 0; }
Saída
Digite um caractere: g Você digitou g.
Um caractere é internamente representado por seu valor inteiro ASCII; imprimi-lo com %c restaura o símbolo original.
Exemplo 8: Exibindo Valor ASCII
#include <stdio.h> int main() { char chr; printf("Digite um caractere: "); scanf("%c", &chr); printf("Você digitou %c.\n", chr); printf("Valor ASCII é %d.", chr); return 0; }
Saída
Digite um caractere: g Você digitou g. Valor ASCII é 103.
Manipulando Múltiplas Entradas
Coletar vários valores em uma única chamada scanf() é eficiente e conciso.
#include <stdio.h> int main() { int a; float b; printf("Digite um inteiro e depois um float: "); scanf("%d%f", &a, &b); printf("Você digitou %d e %f", a, b); return 0; }
Saída
Digite inteiro e depois um float: -3 3.4 Você digitou -3 e 3.400000
Especificadores de Formato para I/O
Abaixo está uma referência concisa para tipos de dados C comuns e seus especificadores printf() / scanf().
%d–int%f–float%lf–double%c–char
| Tipo de Dado | Especificador de Formato |
|---|---|
int | %d |
char | %c |
float | %f |
double | %lf |
short int | %hd |
unsigned int | %u |
long int | %li |
long long int | %lli |
unsigned long int | %lu |
unsigned long long int | %llu |
signed char | %c |
unsigned char | %c |
long double | %Lf |
Linguagem C
- Fundamentos de C#: Essenciais de Entrada e Saída
- Dominando Entrada e Saída em C++: Guia Prático
- Dominando I/O e Importação de Módulos em Python: Guia Prático
- Python File I/O: Dominando Operações de Arquivo, Leitura, Escrita e Gerenciamento
- Dominando Entrada e Saída em Java: Imprimir, Ler e Formatados Seus Dados
- Axiomtek IPS960‑511‑PoE: Controlador de Visão Robusto All‑In‑One para Inspeção Industrial
- Série acceed EDAM‑4200: Módulos I/O Integrados para Comunicação de Dados Escalável e Confiável
- Dominando Streams em C++: cout, cin, cerr, clog – Guia Prático
- Dominando Latches D: Projeto, Operação e Diferenças Principais
- Dominando Entrada e Saída em Programação C