#include <ctype.h> // <cctype> en C++
int isupper( int character );
Cette fonction permet de tester si un caractère donné est une lettre majuscule ou non. Rappel : cette classification dépend de la localisation courante. Dans la localisation "C", seules les lettres non accentuées de l'alphabet latin sont reconnues comme des lettres majuscules.
int car la fonction peut aussi accepter la valeur -1 (EOF - End Of File) correspondant à la fin d'un
flux.
La valeur de retour doit être interprétée en tant que valeur booléenne. Une valeur positive non nulle signifiera donc qu'il s'agit bien d'une lettre majuscule. La valeur 0
indiquera qu'il ne s'agit pas d'une lettre majuscule.
#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 ( isupper( buffer[i] ) ) { buffer[i] |= 32; // equivalent à un appel à tolower } } 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 OR sur la valeur numérique du caractère considéré en ajoutant le sixième bit :
si l'on a une lettre majuscule, on passera donc bien à une lettre minuscule.
Attention : cet exemple utilise des éléments de syntaxe définis dans le standard C99. L'emploi 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 : De La Vega Hello de la vega $>
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 :