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 islower

La fonction isgraph La fonction isprint


Entête à inclure

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

Fonction islower

int islower( int character );

Cette fonction permet de tester si un caractère donné est une lettre minuscule ou non. Rappel : les fonctions de cette librairie ne traitent que les caractères purs ASCII. Les lettres accentuées ne seront donc pas considérées comme des caractères alpha-numériques. De plus les caractères ne preprésentant même pas une lettre ne seront donc pas considérés comme une minuscule.

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 cond qu'il s'agit bien d'une lettre minuscule. La valeur 0 indiquera qu'il ne s'agit pas d'une lettre minuscule.

Exemple de code

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

int main() {

    char buffer[80];
    printf( "Enter your last name : " );
    scanf( "%[^\n]", buffer );

    size_t length = strlen( buffer );
    for( size_t i=0; i<length; i++ ) {
        if ( islower( buffer[i] ) ) {
            buffer[i] &= 223;  // equivalent à un appel à toupper
        }
    }

    printf( "Hello %s\n", buffer );

    return EXIT_SUCCESS;
}

Afin de mieux comprendre cet exemple, une petite précision peut être utile. Dans la table ASCII, les lettres majuscules et les lettres minuscules ont leurs codes numériques espacés de 32 unités. Ainsi le caractère 'A' a comme code numérique 65 alors que le caractère 'a' a comme code numérique 97. En fait, la valeur 32 correspond à 25 : donc la présence ou non d'un bit permet de passer d'une plage de caractères à l'autre. Ce choix est historique : à l'époque, exécuter des opérations numériques (ajout, sustraction) prenait plus de cycles CPU que l'exécution d'opérations binaires (opérations AND, OR, ...). Dans notre exemple, on fait un masque binaire AND sur la valeur numérique du caractère considéré en supprimant le sixième bit (255 - 32 = 223) : si l'on a une lettre minuscule, on passera donc bien à une lettre majuscule.

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 last name : Toto
Hello TOTO
$>

Sujets connexes

isalnum
isalpha
isblank
iscntrl
isdigit
isgraph
isprint
ispunct
isspace
isupper
isxdigit
tolower
toupper


La fonction isgraph La fonction isprint