Da trilha de C Este conceito ainda não saiu como card do dia. ir para o card de hoje

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

  • printf usa especificadores como %d, %f, %c, %s para formatar a saída.
  • scanf lê dados formatados, mas para no primeiro espaço em branco para %s.
  • getchar lê um único caractere e é útil para limpar o buffer de entrada.
  • fgets lê uma linha inteira com segurança, incluindo espaços, até um limite de tamanho.
io_basico.c
#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;
}

Exercícios

  1. 1
    Fácil

    Lendo e exibindo um número inteiro

    Escreva um programa que leia um número inteiro digitado pelo usuário e o exiba na tela.

    Resolver
  2. 2
    Médio

    Lendo nome com espaços usando fgets

    Escreva um programa que leia o nome completo do usuário (com espaços) e o exiba. Use fgets para a leitura e remova o caractere de nova linha antes de exibir.

    Resolver
  3. 3
    Desafio

    Calculadora simples com menu e validação

    Escreva um programa que exiba um menu com operações (1-Soma, 2-Subtração, 3-Multiplicação, 4-Divisão, 0-Sair). O programa deve ler a opção com scanf, ler dois números com scanf, realizar a operação e exibir o resultado. Após cada operação, o menu deve ser exibido novamente até que o usuário digite 0. Trate divisão por zero e opções inválidas.

    Resolver

Continue estudando