[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: problema con scanf (novato)



El problema es porque getchar() no espera a que des a Intro para guardar el 
caracter introducido por teclado. Lo que ocurre es que antes hay que limpiar 
el buffer de entrada porque si no getchar adquiere el valor en él contenido 
(que suele ser un Intro al haber metido antes otro dato).

Para ello, prueba a poner justo antes del getchar, la siguiente línea:

	fflush(stdin);

Me comentas si te funciona o no.


El Domingo, 20 de Junio de 2004 13:17, Ramiro Aceves escribió:
|| Hola amigos.
|| No se si es el lugar más adecuado para preguntar esto, si no lo es por
|| favor decídme dónde.
|| Hoy me puse a practicar C con un pequeño programita. El objetivo del
|| programa es muy sencillo, partiendo de la longitud de los elementos de
|| una antena yagi para radioaficionado introducidos por el teclado,
|| generar por la salida estándar el formato adecuado de entrada para el
|| programa de simulación NEC2 (nummerical electromagnetic code). Bueno, el
|| caso es que no pasaron ni 20 minutos y ya me he quedado estancado en
|| algo que quizás para vosotros sea algo trivial, pero por más que miro no
|| le veo el fallo.
||
|| El problema es que el programa se "salta" la instrucción
|| respuesta=getchar();
|| Para que me funcione debo poner dos líneas iguales:
||
|| respuesta=getchar();
|| respuesta=getchar();
||
|| ¿Alguien me puede aportar alguna idea?
|| Muchas gracias.
||
|| /*this program generates a *.NEC file for yagi antenna modelling*/
||
|| #include <stdio.h>
|| int N;
|| int a;
|| char respuesta='n';
|| float longitud[100];
|| void main(void){
||
|| printf("number of elements? [1-100]\n");
|| scanf("%d",&N);
||
||
|| while(respuesta=='n')
|| {
|| printf("enter element length, starting from reflector to last director
|| [mm]\n");
|| for (a=0;a<N;a++)    {
||     printf("element number %d : ",a);
||     scanf("%f",longitud+a);
||
||             }
|| printf("You have entered:\n");
|| for (a=0;a<N;a++)    {
||     printf("element number %d : ",a);
||     printf("%f\n",*(longitud+a));
||
||             }
||
|| printf("is data correct? [y/n]\n");
|| respuesta=getchar();
|| respuesta=getchar();
||
|| }
||
||
||
||
||
|| }



Reply to: