Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Fonction isxdigit

La fonction isupper La fonction tolower


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

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


La fonction isupper La fonction tolower