Médio C

Lendo nome com espaços usando fgets

Enunciado

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.

Requisitos

  • Usar fgets para ler o nome.
  • Remover o \n do final da string, se presente.
  • Exibir o nome em uma linha: Nome: <nome>.

Código inicial

#include <stdio.h>
#include <string.h>

int main(void) {
    char nome[100];
    // Seu código aqui
    return 0;
}

Saída esperada

Digite seu nome completo: Maria da Silva
Nome: Maria da Silva
Ver dica

Use fgets(nome, sizeof(nome), stdin); e depois procure o \n com strcspn ou um laço.

Mostrar solução
#include <stdio.h>
#include <string.h>

int main(void) {
    char nome[100];

    printf("Digite seu nome completo: ");
    fgets(nome, sizeof(nome), stdin);  // lê a linha inteira, incluindo espaços

    // Remove o '\n' do final, se existir
    nome[strcspn(nome, "\n")] = '\0';

    printf("Nome: %s\n", nome);

    return 0;
}

Passo a passo

  1. Incluímos <stdio.h> para printf e fgets, e <string.h> para strcspn.
  2. Declaramos nome como um array de char com tamanho 100.
  3. fgets(nome, sizeof(nome), stdin) lê até 99 caracteres ou até encontrar \n, armazenando em nome.
  4. nome[strcspn(nome, "\n")] = '\0'; encontra a posição do \n e a substitui por \0, terminando a string antes da quebra de linha.
  5. printf exibe o nome sem o \n extra.

Por que funciona

fgets lê a linha inteira, incluindo espaços, e armazena o \n se houver espaço. Removê-lo evita que a saída tenha uma quebra de linha adicional. strcspn retorna o índice do primeiro caractere da lista "\n", ou o comprimento da string se não encontrar.

Erros comuns

  • Não remover o \n: a saída fica com uma linha em branco extra.
  • Usar scanf("%s", nome): lê apenas até o primeiro espaço, truncando o nome.
  • Esquecer de incluir <string.h>: o compilador pode não reconhecer strcspn.

Outra forma de resolver

Pode-se usar um laço for para percorrer a string e substituir o \n por \0, mas strcspn é mais conciso e idiomático.

Saída esperada

Digite seu nome completo: Maria da Silva
Nome: Maria da Silva