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.
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
ipra 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 usarprintfeputchar. - Inclui
<conio.h>pra ter ogetch(). - Cria o vetor
char frase[31];e um contadorint 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 umwhile. - Enquanto o valor lido for diferente de
'\r'(Enter) ei < 30, a gente faz:frase[i++] = ch;(armazena o caractere e incrementa o índice)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 colocafrase[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;
}