C I/O Básico
Entrada e saída
Em C, a entrada e saída padrão são feitas por funções da biblioteca <stdio.h>. A função printf escreve texto formatado na saída padrão, enquanto scanf lê dados formatados da entrada padrão. Para leitura caractere a caractere, usamos getchar; para ler linhas inteiras com segurança, usamos fgets.
Entender os especificadores de formato (%d, %f, %c, %s) é essencial para exibir e ler corretamente os tipos de dados. scanf é prática para ler números e palavras, mas tem limitações: ela para de ler ao encontrar espaço, tabulação ou nova linha, e pode deixar o caractere de nova linha no buffer, causando problemas em leituras seguintes.
getchar lê um único caractere por vez, sendo útil para consumir o \n residual ou processar texto caractere a caractere. Já fgets lê uma linha inteira (até um limite de tamanho), incluindo espaços, e é a forma mais segura de ler strings com espaços em C.
Neste card, você verá exemplos práticos dessas funções e como combiná-las para evitar erros comuns de buffer.
Pontos-chave
printfusa especificadores como%d,%f,%c,%spara formatar a saída.scanflê dados formatados, mas para no primeiro espaço em branco para%s.getcharlê um único caractere e é útil para limpar o buffer de entrada.fgetslê uma linha inteira com segurança, incluindo espaços, até um limite de tamanho.
#include <stdio.h>
int main(void) {
int idade;
float altura;
char inicial;
char nome[50];
// Leitura formatada com scanf
printf("Digite sua idade: ");
scanf("%d", &idade);
printf("Digite sua altura (m): ");
scanf("%f", &altura);
// Consome o caractere de nova linha deixado pelo scanf
while (getchar() != '\n');
// Leitura de caractere com getchar
printf("Digite a inicial do seu nome: ");
inicial = getchar();
// Limpa o buffer novamente
while (getchar() != '\n');
// Leitura de linha inteira com fgets
printf("Digite seu nome completo: ");
fgets(nome, sizeof(nome), stdin);
// Exibição formatada com printf
printf("\n--- Dados ---\n");
printf("Nome: %s", nome);
printf("Inicial: %c\n", inicial);
printf("Idade: %d anos\n", idade);
printf("Altura: %.2f m\n", altura);
return 0;
}