Existe um problema bastante comum quando programamos em
C, conhecido como
buffers. Nesta dica simples mostro como resolvê-los.
Há um tempo atrás, quando lá estava eu estudando C, me deparei com um pequeno erro em meu código. Ele era composto com a seguinte estrutura:
#include <stdio.h>
main(){
char char1, char2
printf("Insira um caractere: ");
scanf("%c", &char1);
printf("Insira outro caractere: ");
scanf("%c", &char2);
printf("Os caracteres inserido foram, respectivamente: '%c' e '%c'\n", char1, char2); }
Logo notei que obtive o seguinte resultado, usando os caracteres 'a' e 'b':
"Os caracteres inseridos foram, respectivamente: 'a' e ''
Aí vem o problema: por quê não tive como resultado o 'b' no segundo caractere, utilizada na variável 'char2'?
O problema é simples de ser resolvido. Após uma pequena busca ao
Google aprendi algo sobre Buffer. Logo vi que o problema se apresentava pelo seguinte fato:
Como a variável 'char1' é do tipo caractere (char), o programa só faria a leitura de 1 (um) caractere. Porém, no caso, digitamos 2 (dois). Dois? Como assim?
Simples. Acontece que quando pressionado a tecla <ENTER>, usado para prosseguirmos com nosso algoritmo, o programa o reconhece também como um caractere. Assim, como a variável só lê um caractere, ele vai armazenar a tecla <ENTER> na memória. Dessa forma, ele automaticamente 'joga' a tecla <ENTER> para a segunda variável, char2.
Para resolvermos isso é bem simples. Basta inserirmos um 'espaço', da seguinte forma:
#include <stdio.h>
main(){
char char1, char2
printf("Insira um caractere: ");
scanf("%c", &char1);
printf("Insira outro caractere: ");
scanf(" %c", &char2);
printf("Os caracteres inserido foram, respectivamente: '%c' e '%c'\n", char1, char2); }
Note que quando o programa realiza a segunda leitura, há um espaço antes dos caracteres '%c'. O <espaço> é responsável por remover todos os separadores (no caso, <ENTER>) do Buffer, deixando-o como 'zero'.
Nenhum comentário foi encontrado.