PedroVictor Postado Dezembro 24, 2009 Denunciar Share Postado Dezembro 24, 2009 Olá pessoaL!Sou novo aqui no fórum, então, por favor me perdoem se eu não soube postar direito... :DSou estudante de Eng. Elétrica (terceiro semestre ainda) mas estou me interessando demais pelas disciplinas de Programação.Até agora só tive aulas de Lógica e Algoritmos Computacionais e Linguagem de Programação C.Estou procurando me aprofundar cada vez mais nessa área mas sempre encontro dificuldades...Minha dúvida é a seguinte:Como faço para impedir ou não aceitar a entrada de dados (via teclado) que não corresponde com o tipo de variável que vai receber??Ex.:. . . printf("Informe um numero: "); scanf("%d",&numero); . .Se o usuário digitar um caracter, que não seja um número, o meu programa sempre dá erro, entra em Looping, sei lá.. rsrsJá tentei diversar formas de resolver esse problema.. :wacko: Obrigado desde já. :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Dezembro 24, 2009 Denunciar Share Postado Dezembro 24, 2009 O certo seria você ler uma string, e depois validar e converter.Use fgets para isso. Não se esqueça que fgets coloca '\n' no final da string.. . char input[1024]; fgets(input, 1024, stdin); /* stdio.h */ if(input[strlen(input) - 1] == '\n') input[strlen(input) - 1] = 0; /* NULL */ if(!eNumero(input)) /* essa função você tem que criar */ /* pede de novo o input */ int numero = atoi(input); /* stdlib.h */ . .Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 RonaldoRG Postado Dezembro 25, 2009 Denunciar Share Postado Dezembro 25, 2009 Pode tambem fazer o seguinte: A função scanf retorna um inteiro 0 quando a entrada não corresponda com o que ele deva receber e, 1 caso a entrada esteja correta:... int tipo; tipo = scanf("%d", &numero); if(tipo == 0) printf("dado digitado errado); else printf("dado correto"); ...Abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 PedroVictor Postado Dezembro 29, 2009 Autor Denunciar Share Postado Dezembro 29, 2009 (editado) Pode tambem fazer o seguinte: A função scanf retorna um inteiro 0 quando a entrada não corresponda com o que ele deva receber e, 1 caso a entrada esteja correta:... int tipo; tipo = scanf("%d", &numero); if(tipo == 0) printf("dado digitado errado); else printf("dado correto"); ...Abraço.Nossa!! Que solução simples! Muito obrigado mesmo!! :Do/Obrigado aee também Durub :D.. Editado Dezembro 29, 2009 por PedroVictor Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
PedroVictor
Olá pessoaL!
Sou novo aqui no fórum, então, por favor me perdoem se eu não soube postar direito... :D
Sou estudante de Eng. Elétrica (terceiro semestre ainda) mas estou me interessando demais pelas disciplinas de Programação.
Até agora só tive aulas de Lógica e Algoritmos Computacionais e Linguagem de Programação C.
Estou procurando me aprofundar cada vez mais nessa área mas sempre encontro dificuldades...
Minha dúvida é a seguinte:
Como faço para impedir ou não aceitar a entrada de dados (via teclado) que não corresponde com o tipo de variável que vai receber??
Ex.:
Se o usuário digitar um caracter, que não seja um número, o meu programa sempre dá erro, entra em Looping, sei lá.. rsrs
Já tentei diversar formas de resolver esse problema.. :wacko:
Obrigado desde já.
:D
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.