Código:
// Biblioteca del sistema
#include <stdio.h>
// Constantes del fichero
#define CTE 16
#define VALOR "El valor decimal de 0x%c%c es %d\n"
#define NOERROR 1
#define ERROR 0
// Funciones que usaremos
int hexDec(char car1, char car2);
int leeCaracter(char * ccar1, char * ccar2);
int main()
{
// Declaramos las variables
char car1;
char car2;
// Declaramos las variables de control
int cuno;
int cdos;
// Solicitamos los caracteres hexadecimales
do
{
// Llamamos a la función leeCaracter
leeCaracter(&car1, &car2);
cuno = NOERROR;
cdos = NOERROR;
if (!((('0' <= car1) && (car1 <= '9'))
|| (('A' <= car1) && (car1 <= 'F'))
|| (('a' <= car1) && (car1 <= 'f'))))
{
cuno = ERROR;
}
if (!((('0' <= car2) && (car2 <= '9'))
|| (('A' <= car2) && (car2 <= 'F'))
|| (('a' <= car2) && (car2 <= 'f'))))
{
cdos = ERROR;
}
if ((NOERROR == cuno) && (NOERROR == cdos))
//Llamamos a la funcion hexDec
hexDec(car1, car2);
if ((cuno == ERROR) && (car1 != 'q'))
{
printf("Error en el primer valor introducido\n");
}
if ((cdos == ERROR) && (car2 != 'q'))
{
printf("Error en el segundo valor introducido\n");
}
getchar();
}
while ((car1 != 'q') || (car2 != 'q'));
return 0;
}
// Definimos la funcion hexDec
int hexDec(char car1, char car2)
{
int valor1;
int valor2;
int valor;
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 - 32;
}
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 - 32;
}
valor = CTE * valor1 + valor2;
printf(VALOR, car1, car2, valor);
return valor;
}
// Definimos la funcion leeCaracter
int leeCaracter(char * ccar1, char * ccar2)
{
printf("Introduzca un valor hexadecimal: ");
scanf("%c%c", ccar1, ccar2);
if ((*ccar1 == 'q') && (*ccar2 == 'q'))
{
return 0;
}
else
if (((('0' <= *ccar1) && (*ccar1 <= '9'))
|| (('A' <= *ccar1) && (*ccar1 <= 'F'))
|| (('a' <= *ccar1) && (*ccar1 <= 'f')))
|| ((('0' <= *ccar2) && (*ccar2 <= '9'))
|| (('A' <= *ccar2) && (*ccar2 <= 'F'))
|| (('a' <= *ccar2) && (*ccar2 <= 'f'))))
{
return 1;
}
}
Pero al compilar me da el siguiente aviso:
hexDec7.c: En la función ‘leeCaracter’:
hexDec7.c:138:1: aviso: el control alcanza el final de una función que no es void
¿Alguien me puede decir como solucionarlo?
Saludos y gracias de antemano!