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. para que funcione getchar */ #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 } 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 do{ while(c != 13 ) // un while hasta que se aprete la tecla enter en ascii es 13 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 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 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 }