Buenas, tengo el siguiente programa que me pide un valor hexadecimal y lo transforma en decimal, sin importar que sea letras mayusculas o minúsculas, es código es el siguiente:
#include <stdio.h>
int main ()
{
char car1;
char car2;
char valor1;
char valor2;
int valor;
printf("Introduzca un valor hexadecimal:\n");
scanf("\n%c%c", &car1, &car2);
if('0'<=car1 && car1<='9')
valor1=car1-'0';
else if ('A'<=car1 && car1<='F')
valor1=car1-'A'+10;
else if ('a'<=car1 && car1<='f')
valor1=car1-'a'+10;
if('0'<=car2 && car2<='9')
valor2=car2-'0';
else if ('A'<=car2 && car2<='F')
valor2=car2-'A'+ 10;
else if ('a'<=car2 && car2<='f')
valor2=car2-'a'+10;
valor= 16*valor1 + valor2;
printf("EL valor decimal de 0x%c%c es %d\n",car1,car2,valor);
return 0;
}
Pero me han pedido que proteja el programa de tal forma que detecte si alguno de los carácteres es inválido, indicándolo con un mensaje de error y no procesándolos.
Lo he intentado poniendo otro if else, pero no sé como sacarlo, ¿alguna ayuda?
Gracias y un saludo