Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luiz Beginner

Limpeza buffer.

Recommended Posts

Olá pessoal qual a melhor maneira de limpar o buffer do teclado ?, estava vendo no site do C progressivo onde era usada o fflush(stdin) no windows e __fpurge(stdin) no linux

mais toda vez que executo um programa com __fpurge(stdin) da erro no linux pesquisando encontrei o setbuf(stdin, NULL) só que toda vez que uso acaba com dois enters.

Sei que não fui muito claro se alguém puder ajudar agradeço :-).

Captura de tela_2018-01-19_22-21-32.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola @Luiz Beginner, eu costumo usa de duas maneiras:

 

1) Usando um define, essa maneira foi um professor (mto bom) da faculdade que me passou

#define CLEAN_BUFF do{ int c; while((c = getchar()) != '\n' && c != EOF);}while(0)

2) Usando o "%*c" depois de alguma linha que você tiver dado entrada de 1 byte, se nao me engana essa eu vi em um livro da deitel (acho)

#include <stdio.h>

int main()
{
	char i1 = 0;
	char i2 = 0;
	
	scanf ("%c%*c", &i1);
	scanf ("%c%*c", &i2);
	
	printf("%c\t%c\n", i1, i2);
	
	return (0);
}

 

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, @Nefisto deu certo aqui valeu.

Também li que também pode dar um espaço entre as áspas dupas e simbolo do %c e também usar o getchar(), fgetc(stdin); e getc(stdin); nãosei se você viu.

Ex: " %c".

Sou iniciante e estou estudando por conta própria.:smile:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa @Luiz Beginner, então mano, o do espaço eu conhecia mas nunca fui atras pra intende o pq, dos outros eu so nao conhecia o fgetc passando o stdin como parametro, é q como aqueles dois sempre resolveram, acabei n indo atras de outros. Boa sorte aew nos seus estudos mano, e se precisa de alguma mão mais urgente e quise me manda um email, se eu soube eu te ajudo com oq der

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu @Nefisto .

Desculpa, mais vou precisar de outra ajuda sua.

Na verdade não tive problemas só quero saber se dessa forma está realmente certo.

Impressão de duas variáveis do tipo char tive esse problema mais com que sabia consegui resolver.

 

Captura de tela_2018-01-23_17-45-13.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Luiz Beginner, então, eu n gosto mto do espaco bem por essa razao, apesar de ta funcionando, no seu buffer fico um '\n', se você cria um a3 e da um scanf bem embaixo o '\n' vai fica nele, é facil de esquece do espaco, sempre que eu mecho com char costumo usa aquilo q eu flei la em cima, só toma cuidado q esses erros em programas maiores sao um saco pra encontra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.