[C con Clase] ¿Como detectar el tipo de dato ingresado con scanf en C?

Armando B. VERA abvera en arnet.com.ar
Jue Nov 20 15:18:04 CET 2008


cómo podemos detectar el tipo de dato ingresado por teclado y tratarlo 
adecuadamente?

Ejemplo
#include <stdio.h>

int main() {
	int fechaTemp=0;
	int dia=0;
	printf("\n\tIngrese un entero entre 1 y 31");
	while(dia==0) {
		if(scanf("%d",&fechaTemp)>=1 && fechaTemp<=31) {
		
			dia=fechaTemp;
		} else {
			printf("\n\n\tError: Ingrese un valor correcto (entero entre 1 y 31)  ");
		}
	}
}

El problema de este código es que si el valor ingresado por teclado no es 
entero el bucle se repite indefinidamente. 

La pregunta es: ¿Hay alguna forma de saber si el valor ingresado por teclado 
es entero o nó. algo asi como las funciones "isdigit(variable)" de la 
librería ctype? pero que se pueda tratar con scanf.

Ese problema no la tengo en c++ (cin) pero estoy tratando de entenderle al C.
-- 
Armando B. VERA
abvera en arnet.com.ar




Más información sobre la lista de distribución Cconclase