Ei, você! Sabe pra quê serve uma Limpeza de Buffer?
Não?? Então se liga nessa dica ...
Suponhamos que existam 3 funções, uma após a outra e ao tentar ler o caractere na segunda função, o programa simplesmente colocar o enter (\n) e já “pula” para a terceira(no nosso caso não haverá a leitura terceira). A limpeza de buffer serve para evitar este tipo de problema.
Não?? Então se liga nessa dica ...
Suponhamos que existam 3 funções, uma após a outra e ao tentar ler o caractere na segunda função, o programa simplesmente colocar o enter (\n) e já “pula” para a terceira(no nosso caso não haverá a leitura terceira). A limpeza de buffer serve para evitar este tipo de problema.
Um exemplo de quando é
necessário limpar:
int main()
{
char a;
int b;
printf("Informe
caractere: ");
printf("Informe
numero: ");
b = getchar();
printf("%d",a);
printf("%d",b);
printf("%d",b);
return 0;
}
Mas como limpar o buffer?
Cria-se uma função na qual chamaremos "limparBuffer", para isso criaremos vamos definir uma variável do tipo char e logo após faremos um ciclo while.
Exemplo:
void limparBuffer(){
char c;
while ((c = getchar()) != “\n” && c != EOF);
}
}
O
que esses comandos fazem é ir "pegando" os elementos do buffer, até que o
caractere '\n' apareça, ou o EOF(end of file). Em
outras palavras, enquanto c for diferente de quebra de linha ou c for diferente
de EOF o ciclo vai continuar a execução.
Agora é só chamar a função apos cada leitura. Exemplo:
void limparBuffer()
{
{
char c;
while ((c = getchar()) != “\n” && c != EOF);
}
}
int main()
{
char a;
int b;
printf("Informe caractere: ");
limparBuffer();
printf("Informe numero: ");
b = getchar();
limparBuffer();
limparBuffer();
printf("%d",a);
printf("%d",b);
printf("%d",b);
return 0;
}
Agora um método simples, utilizando o próprio scanf() é o seguinte:
scanf(" %d", &b); //repare no espaço entre o " e o %.
ou ainda:
scanf("\n%d", &b); //agora o "\n"
Simples não é? Isso já é o suficiente pra limpar o buffer.
Aproveitem!!!
scanf(" %d", &b); //repare no espaço entre o " e o %.
ou ainda:
scanf("\n%d", &b); //agora o "\n"
Simples não é? Isso já é o suficiente pra limpar o buffer.
Aproveitem!!!
Nenhum comentário:
Postar um comentário