RE:validar entrada de solo numeros
Hola yo hice esta funcion con la que puedes validar en tiempo de ejecucion y nadamas permite la entrada de puros numeros , hasta que presiones esc o des enter o tabulador. espero que te sirva..
#include "stdio.h"
#include "conio.h"
#include "ctype.h"
#include "stdlib.h"
void lee_num(int x, int y, int max, char tipo, char *cad);
void main(void){
int x,y,tam,num;
char temp[5];
char *aux;
aux=temp;
tam=4;
x=10;
y=5;
clrscr();
lee_num(x,y,tam,' ',aux); {' ' estas son para el caracter de borrado}
gotoxy(20,10); printf(" numero %s",temp);
num=atoi(temp);
gotoxy(20,11); printf(" numero %d",num);
getch();
}//funcion main
/*---------------------------------------------------------------------------
Con esta funcion leemos un numero en una posicion determinada de la pantalla
---------------------------------------------------------------------------*/
void lee_num(int x, int y, int max, char tipo, char *cad){
char car;
int i;
_setcursortype(_SOLIDCURSOR);
gotoxy(x,y); cprintf("%c",tipo);
gotoxy(x,y);
i=0;
do{
car='\0';
car=getch(); /*leemos el caracter*/
/*si es una letra o un numero y no superamos el limite del arreglo*/
if(isdigit(car) && !iscntrl(car) && i < max){
gotoxy(x,y); cprintf("%c",car); /*la escribimos en pantalla*/
*(cad+i) = car; /*y la guardamos en la cadena*/
x++; /*y aumentamos la coord en x*/
i++; /*y la posicion en la cadena*/
gotoxy(x,y);
}/*sentencia if*/
else if( car == '\b' && i > 0){ /*si quiere borrar el ultimo caracter*/
gotoxy(x-1,y); printf("%c",tipo); /*hasta que borre el primero*/
*(cad+i)='\0';
x--;
i--;
gotoxy(x,y);
}/*sentencia else if*/
/*Mientras no sea esc, tab, enter,*/
}while( car !='\x1b' && car != '\t' && car != '\r');
if(car == '\x1b'){ /*si fue esc, tenemos cadena vacia*/
*(cad+i)=car;
i++;
}/*sentencia if*/
*(cad+i)='\0'; /*pones el fin de cadena, para no desbordar el arreglo*/
_setcursortype(_NOCURSOR);
}/*funcion lee_num*/