Este codigo en c# valida en tiempo real el ingreso de numeros.
en el codigo esta explicado como funciona, le faltarian algunos detalles pero funciona bien para aquellos que neseciten una carga en c
Código C:
Ver original#include <stdio.h> /* Archivo que contiene la definción de funciones que trabajan con entradas y salidas.
#include <string.h> /* Archivo que contiene la definción de funciones que trabajan con caracteres.*/
int valida_numeros(int,int); // aca inicializo la funcion que retorna un int
main()
{int numero;
numero=valida_numeros(8,4); // el primero 8 es el maximo que se puede ingresar, el 4 es lo minimo a ingresar
printf(" \n \n El numero ingresado es %d ",numero
); }
int valida_numeros(int longitud, int tamanio){ // longitud es maximo largo a ingresar el tamanio es lo minimo a ingresar
char c;
int i,num,d=0,b=0,f=0;
long int m=1;
char nu[longitud]; //si o si hay que declarar un char el cual se le agrega la lomgitud de caracteres a almacenar como maximo
printf("\r\n Ingrese mas de %d dijitos \n",tamanio
); do{
while(c != 13 ) // un while hasta que se aprete la tecla enter en ascii es 13
{c
=getch(); // el getch captura la teclas que han sido presionadas en funcion ascii if(c == 0 )
else
if(c>47 && c<58 && b<longitud || c==8) // aca se reconoce en ascii si se preciono del 0 al 9
{
switch(c){ // si se preciono algun numero este se almacena en el array char y b abansa cada ves uno.
case 48:{num=0; b=b+1; nu[b]=num;break;}
case 49:{num=1; b=b+1; nu[b]=num;break;}
case 50:{num=2; b=b+1; nu[b]=num;break;}
case 51:{num=3; b=b+1; nu[b]=num;break;}
case 52:{num=4; b=b+1; nu[b]=num;break;}
case 53:{num=5; b=b+1; nu[b]=num;break;}
case 54:{num=6; b=b+1; nu[b]=num;break;}
case 55:{num=7; b=b+1; nu[b]=num;break;}
case 56:{num=8; b=b+1; nu[b]=num;break;}
case 57:{num=9; b=b+1; nu[b]=num;break;}
case 8:{ // si se preciona la tecla borrar que es 8 en ascii primero verifica que elcontador b no este en 0
if(b>0){
b=b-1; // si b es mayor que 0 le resta uno y solo cuenta hasta el ultimo numero
printf("\r\n Ingrese %d dijitos minimo \n",tamanio
); for(i=1;i<=b;i=i+1)
{
printf("%d",nu
[i
]); // este for es para que reimprima todos los numero esepto el ultimo ingresado si fue borrado
}}
break;}
} }
}// fin while
if (b<tamanio) // este verifica al apretar enter si se ingreso la cantidad minima requerida
printf("\n Debe ingresar mas de %d dijitos \n",tamanio
); c=1;
{for(i=1;i<=b;i=i+1)
{
if(nu[i]>0){
} // hace que C lo limpie
}}}
}while(b<tamanio);//fin while otro
for(i=1;i<=b;i=i+1)
{
d=d*m+nu[i]; // este for almacena los datos ingresados en char array y los transfiere
m=10;
}
//printf(" lo final de contenido c %d \n",d);
return d; // aca regresa d que contiene el numero ingresado
}