Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/10/2011, 12:44
Avatar de mandrake88
mandrake88
 
Fecha de Ingreso: septiembre-2009
Mensajes: 328
Antigüedad: 15 años, 2 meses
Puntos: 13
Dolor de cabeza con scanf en C

Esto debe ser tema repetido, pero me he pasado horas sin encontrar una solucion definitiva.

Venia usando scanf para leer de teclado sin problemas, hasta que escribi el siguiente codigo

Código C:
Ver original
  1. int ej1(){
  2.     int arr1[100];
  3.     int arr2[100];
  4.     int cant = 0;
  5.     char continuar;
  6.     do{
  7.         printf("\n Ingrese numero: ");
  8.         scanf("%d",&arr1[cant]);
  9.         printf("\n Ingrese letra: ");
  10.         arr2[cant] = getchar();
  11.         cant++;
  12.         do{
  13.            printf("\n Desea cargar otro? s/n");
  14.            continuar = getchar();
  15.         }while(continuar=='n' || continuar=='s');
  16.     }while(continuar!='n');
  17.  
  18.    return cant;
  19. }

El problema esta que dps de leer el numero, me saltea el getchar siguiente por que queda el /n del Enter en el buffer (usando scanf para leer el char tambien me pasa lo mismo) . Encontre que una posible solucion era usar fflush(stdin); para vaciar el buffer de entrada, pero no me funciono (ademas de que en muchos lados advertian que no es recomendable el uso)

Cual seria la forma correcta de leer ese numero entero del teclado?