Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema sencillo C, con scanf()

Estas en el tema de Problema sencillo C, con scanf() en el foro de Programación General en Foros del Web. Hola, tengo un problema con Scanf();. Estoy realizando un programa donde con scanf() debe introducir un numero: scanf("%lf", &num); pero tengo un problema y sq ...
  #1 (permalink)  
Antiguo 28/04/2004, 12:29
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 21 años, 10 meses
Puntos: 1
Problema sencillo C, con scanf()

Hola, tengo un problema con Scanf();.
Estoy realizando un programa donde con scanf() debe introducir un numero:
scanf("%lf", &num);
pero tengo un problema y sq no se que hacer para que si intentan introducir una letra no salga un error.
como lo puedo acer?
  #2 (permalink)  
Antiguo 28/04/2004, 15:40
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 6 meses
Puntos: 52
Pues en C dudaoque exista algo asi. Mas bien lo he visto en ensamlador.

Pero si en ensamblador se puede quiere decir que por ahi alguien debio hacer una funcion en C que haga lo que pides.
  #3 (permalink)  
Antiguo 28/04/2004, 16:00
Avatar de Sabroso  
Fecha de Ingreso: noviembre-2001
Ubicación: Guaymas, Sonora
Mensajes: 454
Antigüedad: 22 años, 5 meses
Puntos: 0
Puedes Ciclar tu Scanf() hasta que el usuario te de un numero

no recuerdo el codigo de C pero seri algo asi

ciclo
scanf()
if num==1 or num==2.... then
-
-
end if

fin del ciclo


es lo que se me ocurrio.
  #4 (permalink)  
Antiguo 30/04/2004, 23:49
Avatar de artury  
Fecha de Ingreso: marzo-2004
Ubicación: Leon, Mexico
Mensajes: 210
Antigüedad: 20 años, 2 meses
Puntos: 0
Bueno, tu debes de saber que scanf() regresa un valor dependiendo del resultado de la operacion, deberias usar ese valor de retorno para validar la entrada
__________________
asi es eso del box
  #5 (permalink)  
Antiguo 01/05/2004, 01:07
Avatar de Max13  
Fecha de Ingreso: octubre-2000
Ubicación: Mx
Mensajes: 1.229
Antigüedad: 23 años, 6 meses
Puntos: 0
No recuerdo bien como se hace, pero estoy seguro de que es con la función fflsuh(stdin); sol o es cuestión de que lo investiges.
  #6 (permalink)  
Antiguo 01/05/2004, 08:50
 
Fecha de Ingreso: abril-2004
Ubicación: La Guardia, España (por ahora)
Mensajes: 124
Antigüedad: 20 años, 1 mes
Puntos: 0
tal ves

Hola, creo que si usas un gets (declarando la variable con un solo valor variable[1], y la controlas con un do-while, lo podes hacer.
salu2
__________________
The vanished dreams, never forget them.......
Live in your world, play in ours.
Visiten:
http://pobladores.lycos.es/channels/juegos/Hikaru_Crazy_Zone
  #7 (permalink)  
Antiguo 01/05/2004, 10:19
 
Fecha de Ingreso: septiembre-2003
Mensajes: 172
Antigüedad: 20 años, 8 meses
Puntos: 0
Hola,
lo mejor es que lo entres como una cadena con por ejemplo el gets, y luego lo conviertas a float con atof. Lo que no es recomendable es mezclar las funciones gets y scanf pq el tema se vuelve un poco loco. Lo del fflush es para vaciar el buffer de entrada para que no te encuentres rebotes raros.
Otra opción es leer caracter por caracter con la funcion getch() que no te pinta el echo del teclado y controlar ahi si es un caracter válido.

Saludos!
__________________
Sr.Propio
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:38.