Convertir hexadécimal en décimal en C

bonjour j’avais deja posé cette question auparavant et je n’ai pas reçu de reponses, donc je retente je dois coder en c un code qui demande un caractere hexadecimal et donne un chiffre en décimal et je dois utiliser la notion de tableau et je dois faire en sorte que lorsqu’on demande un caractere hors de ABCDEF il affiche un message d’erreur ou si je met un espace ou une virgule il devrait afficher une erreur mais si je demande les lettres des hexadécimal en minuscule ca doit fonctionner
Pouvez vous m’aider svp
merci

Voici le début de mon code

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
int main()
{
     int i,dec=0, j=0;
	 char hexa [i] ;
	 int lg = strlen(hexa);
   
     printf("Introduisez un chiffre en hexadecimal; ");
     scanf("%lg",&hexa);
     
     		for(i=0;i<lg;i++)
     		{
     		
     		if (hexa[i]>='0' && hexa[i]<='9')
     			{
     				dec = dec+(hexa[i]-48)*pow(16,j);
     				j++;
				}
				 
     		else if (hexa[i]>= 'A'&& hexa[i] <='F')
     			{
     				dec = dec + (hexa[i]-55)*pow(16,j);
     				j++;
				 }
     			
			 }
			 
	printf("Le nombre introduit %s en decimal est; %d",hexa,dec);
    return 0;
    
}

Bonjour,

Voici un exemple simple qui demande un caractère hexadécimal et donne un chiffre en décimal et utiliser la notion de tableau.

#include <math.h>
#include <stdio.h>
#include <string.h>
int main()
{
  
    char hex[32];
    int decimal, i; 
    
    // utiliser pour stocker l index
    int cnt;
    
    // utiliser pour stocker le chiffre
    int chiffre;
  
    cnt = 0;
    decimal = 0;
	
	printf("Saisir un nombre hexadécimal :");  
    scanf("%s", hex); 
	
    
    // itération de la boucle en utilisant la longueur du nombre hexadécimal
    for (i = (strlen(hex) - 1); i >= 0; i--) {
        
        // utiliser switch case pour trouver le chiffre décimal équivalent
        // pour chaque nombre hexa
        switch (hex[i]) {
        case 'A':
            chiffre = 10;
            break;
        case 'B':
            chiffre = 11;
            break;
        case 'C':
            chiffre = 12;
            break;
        case 'D':
            chiffre = 13;
            break;
        case 'E':
            chiffre = 14;
            break;
        case 'F':
            chiffre = 15;
            break;
        default:
            printf("ERREUR!");  
        }
        
        // calcul du nombre décimal
        decimal = decimal + (chiffre)*pow((double)16, (double)cnt);
        cnt++;
    }
    // afficher le nombre décimal
    printf("Le nombre décimal est: %d", decimal);
    return 0;
}