Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/09/2013, 21:52
fightmx
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 9 meses
Puntos: 22
Respuesta: Que el ingreso sea sólo números en C

Hola, tienes tres funciones: strtol, strtoul y strtod para convertir strings en long ints, unsigned long ints y doubles respectivamente. Las tres son mejores que las más viejas atoi() y atof(), la principal razón es que manejan control de errores mientras que las últimas no. Lo que tratas de hacer es justo para lo que están hechas, scanf piénsala para cuando necesitas ingresar datos con un formato predefinido y no para validar un tipo de dato como intentas, simplemente aprende a usarlas y si quieres practicar intenta haciendo tu propia implementación.

Te dejo un pequeño ejemplo:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int getInt(){
  5.     static char buf[BUFSIZ];
  6.     char *endPtr = 0;
  7.     int n;
  8.     do{
  9.        if(endPtr != 0)printf("\a");
  10.        fgets(buf, BUFSIZ, stdin);
  11.        n = strtol(buf, &endPtr, 10);
  12.     }while(buf[0] == '\n' || *endPtr != '\n');
  13.     return n;
  14. }
  15.  
  16.  
  17. int main() {
  18.     printf("Ingresa un entero:\n");
  19.     int n = getInt();
  20.     printf("Ingresaste: %d", n);
  21.     return 0;
  22. }

Saludos.