C/Visual C - Fernando no lo puedo usar.

 
Vista:
sin imagen de perfil

Fernando no lo puedo usar.

Publicado por Edwin (70 intervenciones) el 31/10/2006 02:35:33
estoy tratando de usar las funciones que controlan los errores en c,pero no me sale.por ejemplo quiero hacer: double a;
scanf("%lf",&a);
//acá quiero que se controle que no se haya ingresado texto ni alfanumérico. En visual básic al tratar de ingresar datos que no son numéricos me sale error,pero los controlo fácil con objeto error,soy nuevo en c,no se como usar las funciones q me indicastes.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Fernando no lo puedo usar.

Publicado por fernando.gomez (1603 intervenciones) el 31/10/2006 03:05:20
Lo que puedes hacer entonces es hacer el scanf pero pedir un caracter -stirng- y en base a este, determinar si es número o no (con isdigit). Con eso, si sí es caracter, conviertes a double, si no, envías un mensaje de error.

El problema es que no es correcto esperar a que salga una excepción (on error resume next, por ejemplo), porque de hecho si no se ingresa un caracter en el scanf, hay comportamiento indefinido y no necesariamente una excepción que puedas manejar con try...catch...

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Fernando no lo puedo usar.

Publicado por Edwin (70 intervenciones) el 31/10/2006 05:12:38
OK.
Seguiré tus pautas, isdigit??, leí esa función y espero que sea compatible con decimales.
Gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fernando no lo puedo usar.

Publicado por fernando.gomez (1603 intervenciones) el 31/10/2006 17:08:05
isdigit de hecho te sirve con un solo caracter. Así que si le pasas el caracter '.', pues va a regresar FALSE. Así que haces entonces

if (isdigit(caracter) || caracter == '.') {
blablabla
}

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Fernando no lo puedo usar.

Publicado por Strato (6 intervenciones) el 02/11/2006 23:38:26
Para que no se estropee prueba esto:

fflush(stdin);
scanf("%lf",&a);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar