Ir para conteúdo
Fórum Script Brasil
  • 0

caractere 0 no scanf...


Guest --Rodolfo --

Pergunta

Guest --Rodolfo --

Tenho o seguinde codigo em C:

printf("Tecle J para jogar ou T para testar o jogo:");

char mododejogo;

scanf("%c",&mododejogo);

while(mododejogo!='T'&& mododejogo!='t' &&

mododejogo!='j'&& mododejogo!='J'){

printf("%c\n",mododejogo);

printf("Tecle J para jogar ou T para testar o jogo:");

scanf("%c",&mododejogo);

}

se eu vo digitando "L" e apertando enter aparece o seguinte:

Tecle J para jogar ou T para testar o jogo:L

L

Tecle J para jogar ou T para testar o jogo:

Tecle J para jogar ou T para testar o jogo:L

L

Tecle J para jogar ou T para testar o jogo:

Tecle J para jogar ou T para testar o jogo:

Parece que ele lia um caractere extra.eu tive que fazer o seguinte:

printf("Tecle J para jogar ou T para testar o jogo:");

char mododejogo,cextra;

scanf("%c%c",&mododejogo,&cextra);

while(mododejogo!='T'&& mododejogo!='t' &&

mododejogo!='j'&& mododejogo!='J'){

printf("%c\n",mododejogo);

printf("Tecle J para jogar ou T para testar o jogo:");

scanf("%c%c",&mododejogo,&cextra);

}

e deu certo

Tecle J para jogar ou T para testar o jogo:l

l

Tecle J para jogar ou T para testar o jogo:l

l

Tecle J para jogar ou T para testar o jogo:l

l

Tecle J para jogar ou T para testar o jogo:t

descobri q era o caractere 0(que parece ser o 'barrazero'(estou digitando o literal aqui e ele some ¬¬).por que ele aparece?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Guest Visitante

Não é . É \n. É o clássico problema do \n no buffer de entrada.

Breakpoint 4, main () at tela.c:10

10 scanf("%c",&mododejogo);

1: mododejogo = 76 'L'

(gdb) s

Breakpoint 2, main () at tela.c:6

6 while(mododejogo!='T'&& mododejogo!='t' &&

1: mododejogo = 10 '\n'

Nem pense em usar fflush(stdin) p/ isso.

#include <stdio.h>
    int main() {
       char mododejogo;
       do {
          printf("Tecle J para jogar ou T para testar o jogo:");
          mododejogo = getchar();
          getchar();
       }while(mododejogo!='T'&& mododejogo!='t' && mododejogo!='j'&& mododejogo!='J');
}

Link para o comentário
Compartilhar em outros sites

  • 0
Guest -Rodolfo-

por que não usar o fflush? ele esta ajudando a não aparecer a mensagem varias vezes se o usuario digita varios caracteres, tipo, acontece

Tecle J para jogar ou T para testar o jogo:kkk

Tecle J para jogar ou T para testar o jogo:Tecle J para jogar ou T para testar o

jogo:

com o fflush vai uma vez so

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...