Buenas noches saludos ten go problema para validcar datos de entradas tengo que hacer un cajero automatico y necesito validar entrada de datos es decir si pido que marque numeros , que el usuario marque numero pues , que si pido caracter pues coloque caracter que si ingresa algo diferente que mande un mensaje voy a colocar este codigo para que me expliquen con este simple codigo no use switch case , lo hice asi pero AYUDEME tengo ansias de aprender ,
#include <stdio.h>
//Ejercicio 3 del tema "Variables y Operadores Básicos":
//Programa que pida la temperatura en grados Celsius y la convierta a grados
//Fahrenheit (y viceversa) mostrando en pantalla un mensaje del tipo
//"xxx.xx grados Celsius son yyy.yy grados Fahrenheit"
int main(){
float c , f;
int opcion;
//pido datos
printf("para convertir celsius a fahrenheit presione 1\n");
printf("para convertir fahrentir a celsius presione 2\n");
scanf("%d",&opcion);
if (opcion==1){
printf("ingrese los grados celsius:");
scanf("%f",&c);
f=9.0/5.0*c+32.0;
//muestro resultados
printf("%.2f grados celsius son %.2f grados fahrenheit \n\n",c,f);
}
else {printf("ingrese los grados fahreint :");
scanf("%f",&f);
//implemento formula
c=(f-32.0)*5.0/9.0;
printf("%.2f grados fahreint son %.2f grados celsius \n\n",f,c);
}
return 0;
}
ayudeme a validar las entradas de este codigo para guiarme de los demas codigo que haga si me ayudan agradeceria que DOCUMENTARAS el codigo para saber soy nuevoo
Mod: Los códigos deben ir en etiquetas GeSHi
scanf no es util para validar datos, ya que el simplemente trata de capturar lo que hy, sin embargo, un pequeño hack para validad sería
char term;//esto se uesará para validción
float num;//del tipo ue quieras, aquí irá el numero
if(scanf("%f%c", &num, &term) != 2 || term != '\n'){
printf("invalido\n"); //si es invalido cae aquí
}else{
printf("numero valido: %f\n", num); //si es valido muestra el numero
}