Fazer um programa para:
Receber uma frase do usuário, caracter a caracter usando getch() e armazenando no vetor (máx. 30 caracteres). Quando o usuário digita enter (Ir) a recepção é finalizada.

Passo 1

Beleza, aqui a gente precisa escrever um programinha em C que peça ao usuário uma frase, mas leia caracter a caracter usando getch(), guardando esses caracteres num vetor de até 30 posições e só pare quando o cara apertar Enter. O conteúdo é: manipulação de vetores de char, laço de repetição, função getch() (que lê um caractere sem precisar apertar Enter) e teste do ASCII do Enter. Vamos precisar de:
  • Um vetor char frase[31] (30 + 1 pra terminar com '\0').
  • Um índice i pra saber em que posição a gente tá.
  • Um loop que chama getch(), verifica se é Enter (ASCII 13, que em C é '\r'), armazena no vetor e para quando bate no limite ou no Enter.

Passo 2

Declaração das variáveis e inclusão das bibliotecas.
  • A gente inclui <stdio.h> pra usar printf e putchar.
  • Inclui <conio.h> pra ter o getch().
  • Cria o vetor char frase[31]; e um contador int i = 0;.
    Aqui explico: a gente reserva 31 posições porque, mesmo que só usemos 30 para os caracteres, precisamos de espaço extra pra colocar o '\0' no final e transformar em string.

Passo 3

Loop de leitura com getch().
  • Chamamos getch() dentro de um while.
  • Enquanto o valor lido for diferente de '\r' (Enter) e i < 30, a gente faz:
    1. frase[i++] = ch; (armazena o caractere e incrementa o índice)
    2. putchar(ch); (opcional, pra exibir o que o usuário tá digitando)
      Se o cara digitar mais de 30 caracteres, o laço já não vai guardar além disso.

Passo 4

Encerramento da string e exibição final.
  • Depois que sai do while, a gente coloca frase[i] = '\0'; pra fechar a string.
  • Aí é só usar printf("Você digitou: %s\n", frase); pra mostrar o que entrou.

Resposta

Segue o programa completo em C:
#include <stdio.h>
#include <conio.h>

int main(void) {
    char frase[31];
    int i = 0;
    int ch;

    printf("Digite uma frase (max 30 caracteres): ");

    // Leitura caracter a caracter até apertar Enter ou chegar em 30 chars
    while ((ch = getch()) != '\r' && i < 30) {
        frase[i++] = ch;   // guarda o caractere no vetor
        putchar(ch);       // mostra na tela o que foi digitado
    }

    frase[i] = '\0';       // finaliza a string
    printf("\nVocê digitou: %s\n", frase);

    return 0;
}

Exercícios relacionados