Ir para conteúdo

POWERED BY:

Arquivado

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

Blue Dark

[Resolvido] String

Recommended Posts

Bem, sou novo no fórum e estou começando a aprender C e estava tentando fazer um jogo da Forca, porém me deparei com um pequeno problema....

 

Eu utilizei o seguinte código para 'pegar' a letra digitada:

 

char Letra;
scanf("%c%*c",&Letra);

Quando o usúario digita apenas 1 caractere tudo ocorre bem.. ele grava o caracter na variavel e "descarta" o enter (\n), porém quando ele digita mais de 1 caractere da problema pois (acredito eu) ele grava o 1º caractere e descarta o 2º e o resto (os outro caracteres e o \n) ficam no buffe e quando vai digitar o próximo caractere não vai =|.. (pelo menos é o que eu acho que acontece O.o)

 

Como eu posso fazer para que ele pegue apenas o 1º caractere e descarte o resto (inclusive o \n)..

 

Desde já obrigado pela ajuda =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

É possivel resolver o seu problema de vááááárias formas...

 

você pode mudar essa variável de char para char* e pegar uma string inteira:

char letras[20]; //tenha certeza que há espaço para guardar tudo, caso contrário acontecerá um overflow
char letra;
scanf("%[^\n]%*c", letras); //vamos mandar ele ler tudo, inclusive espaços, até encontar um '\n' e descartar esse '\n'

letra = letras[0];

 

ou, você pode pegar o primeiro caractére e jogar fora todos os outros:

char letra;

	letra = fgetc(stdin);
	while (fgetc(stdin) != '\n'); //ele vai ficar preso nessa linha até digitarem um '\n'.

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

obs.: ainda bem que você não faz parte da geração de programadores fflush(stdin), que por sinal até resolveria seu problema, parcialmente. hahahahahaha! parabéns!

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.