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
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 usarprintf
eputchar
. - 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;
}