Autor Tópico: Como controlar a entrada de dados em C.  (Lida 4376 vezes)

Offline williamjuan

  • Usuário Ubuntu
  • *
  • Mensagens: 42
    • Ver perfil
Como controlar a entrada de dados em C.
« Online: 27 de Agosto de 2013, 15:54 »
Oi pessoal. Já procurei em todo canto mas não encontrei. Eu quero controlar o que o usuário pode digitar no meu programa em C.

Por exemplo. Se eu peço para ele entrar com a idade, que é um número inteiro, e ele entrar com qualquer outra coisa(um flutuante, uma letra, um espaço, um enter) quero poder fazer uma tratamento desse erro.

Quero também poder controlar o número máximo de caracteres que o usuário pode digitar quando estiver escrevendo uma string. Se a string possui 10 espaços, ele só pode digitar 10 espaços. Se ele tentar digitar o 11 simplismente o cursor não anda para frente, fica no mesmo lugar.

Tem como fazer isso? Não encontro guia em lugar algum na internet que ensine a fazer isso.

Offline gwarah

  • Usuário Ubuntu
  • *
  • Mensagens: 77
    • Ver perfil
Re: Como controlar a entrada de dados em C.
« Resposta #1 Online: 28 de Agosto de 2013, 11:08 »
"Cantar a beleza de ser um eterno aprendiz" (Gonzaguinha)

Offline Felix

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 3.068
    • Ver perfil
    • Alexsandro Felix
Re: Como controlar a entrada de dados em C.
« Resposta #2 Online: 28 de Agosto de 2013, 11:43 »
Isso acho que pode te ajudar:

http://alexandrems.wordpress.com/2010/03/12/problemas-com-entrada-de-dados-em-c/

[]s gwarah

hahahaha.... mundo pequeno mesmo.

Sabia que esse link não me era estranho, fui ver e é o blog de um ex-professor meu (que por coincidência já trabalhei com ele na mesma empresa)

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Como controlar a entrada de dados em C.
« Resposta #3 Online: 28 de Agosto de 2013, 11:52 »
A primeira parte já havia sido respondida no outro tópico, a segunda é bem menos trivial, você tem que realmente entender o que é entrada e saída de dados, leia: http://www.chemie.fu-berlin.de/chemnet/use/info/libc/libc_6.html#SEC66

Pra permanecer no alto nível, você pode fazer a leitura no modo usual, e usar caracteres de escape/controle pra voltar no stream.

http://clc-wiki.net/wiki/C_language:Terms:Control_characters
http://en.wikipedia.org/wiki/ANSI_escape_code

E nessa altura, já vai ser melhor adotar algo como o ncurses, pra que o código permaneça portável.