Fonction isxdigit

Entête à inclure

#include <ctype.h>  // <cctype> en C++

Fonction isxdigit

int isxdigit( int character );

Cette fonction permet de tester si un caractère est un chiffre hexadécimal ou non. Pour rappel le système hexadécimal définit 16 chiffres : 0123456789ABCDEF.

Paramètre

  • character : le caractère à tester. Il est sur-typé par int car la fonction peut aussi accepter la valeur -1 (EOF - End Of File) correspondant à la fin d'un flux.

Valeur de retour

La valeur de retour doit être interprétée en tant que valeur booléenne. une valeur positive non nulle signifira qu'il s'agit bien d'un chiffre hexadécimal. La valeur 0 indiquera qu'il ne s'agit pas d'un chiffre hexadécimal.

Exemple de code

#include <ctype.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {

    char buffer[80];
    printf( "Enter a hexadecimal value : " );
    scanf( "%[^\n]", buffer );

    bool isCorrect = true;
    size_t length = strlen( buffer );
    for( int i=0; i<length; i++ ) {
        if ( ! isxdigit( buffer[i] ) ) {
            isCorrect = false;
        }
    }

    if ( isCorrect ) {
        printf( "Your text (%s) is a hexadecimal number\n", buffer );
        unsigned long value = strtoul( buffer, 0, 16 );
        printf( "The corresponding decimal value is %zu\n", value );
    } else {
        printf( "Your text (%s) is not a hexadecimal number\n", buffer );
    }

    return EXIT_SUCCESS;
}

Attention : cet exemple utilise des éléments de syntaxe définis dans le standard C99. L'emploie de l'option -std=c99 sur la ligne de compilation de votre exemple est donc requis.

Voici un petit exemple d'exécution de ce programme :

$> gcc -o Sample -Wall -std=c99 Sample.c
$> ./Sample
Enter your text : zorro
Your text (zorro) is not a hexadecimal number
$> ./Sample
Enter your text : fe13
Your text (fe13) is a hexadecimal number
The corresponding decimal value is 65043
$>

Sujets connexes

isalnum
isalpha
isblank
iscntrl
isgraph
islower
isprint
ispunct
isspace
isupper
isxdigit