Ver Mensaje Individual
  #12 (permalink)  
Antiguo 19/05/2014, 08:00
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 5 meses
Puntos: 49
Respuesta: Error de buffer al usar scanf

Tan solo tienes que usar un bucle a la espera de que el valor introducido sea el correcto. Y para ello no es necesario el uso de librerías y/o funciones adicionales a stdio.h, las creas a tu medida:

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main (){
  4.   char c[50];
  5.   int num, i, flag, factor, lon;
  6.   do{
  7.     num=0, flag=0, factor=1, lon=0;
  8.     printf("Ingresa un valor: ");
  9.     scanf("%50s",c);
  10.     for (lon = 0; c[lon] ; lon++);
  11.     for (i = 0; c[i] ; i++)
  12.       if (c[i]<'0' ||c[i]>'9'){
  13.         flag=1;
  14.         break;
  15.       }
  16.     if (flag==0)
  17.       for (i = lon-1; i>=0 ; i--,factor*=10)
  18.         num+=(c[i]-'0')*factor;
  19.   }
  20.   while(num>100 || flag!=0);
  21.   printf("Valor ingresado: %d",num);
  22.   return 0;
  23. }

¡¡¡Saluditos!!!