Ir ao conteúdo
  • Cadastre-se

tdtadeu

Membro Pleno
  • Posts

    34
  • Cadastrado em

  • Última visita

Reputação

1
  1. tdtadeu

    Gets e Scanf

    Ola silvioclima, Bom, o que acontece é que quando você usa uma destas funções de entrada via teclado, o que o programa faz é salvar o que foi digitado num buffer de entrada, e depois grava o que estiver neste buffer na variável que você quiser. Exemplo: scanf ("%d", &idade); Quando você digitar "20", o programa grava esse "20" no buffer, e depois a variavel idade pega o que estiver dentro do buffer (Que nesse caso era o "20"). O principal problema com o scanf, é que ele deixa dentro do buffer o "ENTER" que você pressiona para confirmar o que acabou de digitar. Assim, quando você digita a primeira idade, ele vai "consumir" o numero que voce digitou, mas vai ficar um ENTER gravado no buffer de entrada; Quando o laço volta pro "gets(nome)", o gets lê o ENTER que ficou alocado no buffer, e pula esse comando, deixando o nome vazio (O programa entende que você nao quis colocar nome nenhum, e simplesmente digitou ENTER... Porém esse ENTER você digitou antes)... Ai ele vai direto pro scanf("%d", &idade)... Enfim, pra solucionar o problema, coloque antes do "gets(nome)" o seguinte comando: fflush(stdin); Isso fará com que antes do comando "gets" o programa limpe o buffer de entrada, e assim o gets não lerá mais o ENTER que foi pressionado antes. Se a explicação ficou confusa, por favor me avise, ok?! Abraços, Thiago.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...