Accès rapide :
Les fonctions de tests de caractères
Les fonctions de transformations de caractères
Les extensions POSIX
Comparaisons entre ces différentes fonctions
Cette librairie propose un ensemble de fonctions de traitement de caractères. On peut classifier cet ensemble en deux catégories : les fonctions de test, pour savoir si un caractère est d'une certaine nature, et les fonctions de transformation, notamment utiles pour les changements de casse (minuscules, majuscules).
Attention : les fonctions de <ctype.h> attendent une valeur représentable sous forme d'unsigned char,
ou la valeur EOF. Leur comportement dépend aussi de la localisation courante : dans la localisation "C", les résultats
correspondent aux caractères de base de la table ASCII.
Ces fonctions sont très faciles à identifier : elles sont toutes préfixées de is. Elles renvoient toutes une valeur entière typée int, mais vous devriez interpréter cette
valeur en tant que booléen (true / false). Voici la liste des fonctions de cette catégorie.
| Nom | Type | Description | Depuis |
|---|---|---|---|
| isalnum | fonction | Vérifie si un caractère est alpha-numérique. | C89 |
| isalpha | fonction | Vérifie si un caractère est alphabétique. | C89 |
| isblank | fonction | Vérifie si un caractère est blanc ou non. | C99 |
| iscntrl | fonction | Vérifie si l'on a à faire à un caractère de contrôle. | C89 |
| isdigit | fonction | Vérifie si un caractère est un chiffre. | C89 |
| isgraph | fonction | Vérifie si un caractère possède une représentation graphique. | C89 |
| islower | fonction | Vérifie si un caractère est une lettre minuscule. | C89 |
| isprint | fonction | Vérifie si un caractère est affichable (printable) ou non. | C89 |
| ispunct | fonction | Vérifie si l'on a à faire à un caractère de ponctuation. | C89 |
| isspace | fonction | Vérifie si l'on a à faire à un caractère d'espacement. | C89 |
| isupper | fonction | Vérifie si un caractère est une lettre majuscule. | C89 |
| isxdigit | fonction | Vérifie si un caractère est un chiffre hexadécimal. | C89 |
| Nom | Type | Description | Depuis |
|---|---|---|---|
| tolower | fonction | Transforme une lettre majuscule en une minuscule. | C89 |
| toupper | fonction | Transforme une lettre minuscule en une majuscule. | C89 |
POSIX complète <ctype.h> avec des variantes prenant une localisation explicite. Ces fonctions sont pratiques quand un programme
ne doit pas dépendre de la localisation globale du processus.
| Nom | Type | Description | Depuis |
|---|---|---|---|
| locale_t | type | Représente un objet de localisation POSIX. | POSIX |
| isalnum_l | fonction | Teste un caractère alphanumérique avec une localisation explicite. | POSIX |
| isalpha_l | fonction | Teste un caractère alphabétique avec une localisation explicite. | POSIX |
| isblank_l | fonction | Teste un caractère blanc horizontal avec une localisation explicite. | POSIX |
| iscntrl_l | fonction | Teste un caractère de contrôle avec une localisation explicite. | POSIX |
| isdigit_l | fonction | Teste un chiffre décimal avec une localisation explicite. | POSIX |
| isgraph_l | fonction | Teste un caractère graphique avec une localisation explicite. | POSIX |
| islower_l | fonction | Teste une lettre minuscule avec une localisation explicite. | POSIX |
| isprint_l | fonction | Teste un caractère imprimable avec une localisation explicite. | POSIX |
| ispunct_l | fonction | Teste un caractère de ponctuation avec une localisation explicite. | POSIX |
| isspace_l | fonction | Teste un caractère d'espacement avec une localisation explicite. | POSIX |
| isupper_l | fonction | Teste une lettre majuscule avec une localisation explicite. | POSIX |
| isxdigit_l | fonction | Teste un chiffre hexadécimal avec une localisation explicite. | POSIX |
| tolower_l | fonction | Convertit vers une minuscule avec une localisation explicite. | POSIX |
| toupper_l | fonction | Convertit vers une majuscule avec une localisation explicite. | POSIX |
POSIX expose aussi quelques interfaces historiques liées à ASCII. Elles sont documentées ici pour être complet, mais elles sont obsolescentes dans POSIX/XSI et ne doivent pas être privilégiées dans du nouveau code.
| Nom | Type | Description | Depuis |
|---|---|---|---|
| isascii | fonction | Teste si une valeur appartient à la plage ASCII sur 7 bits. | POSIX |
| toascii | fonction | Force une valeur dans la plage ASCII sur 7 bits. | POSIX |
| _tolower | macro | Convertit une majuscule en minuscule, sous précondition. | POSIX |
| _toupper | macro | Convertit une minuscule en majuscule, sous précondition. | POSIX |
Afin de mieux comprendre les différences entre les fonctions de tests proposées, nous vous invitons à analyser le tableau suivant. Il indique, via un code couleur (vert = true et
rouge = false) le résultat de chaque fonction pour chacune des plages de caractères proposées.
| Codes ASCII | Plage de caractères | iscntrl | isblank | isspace | isupper | islower | isalpha | isdigit | isxdigit | isalnum | ispunct | isgraph | isprint |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0x00..0x08 | Caractères de contrôles | x | |||||||||||
| 0x09 | Caractère de contrôle (tab) | x | x | x | |||||||||
| 0x0A..0x0D | Caractères de contrôles (white spaces : '\f', '\v', '\n', '\r') |
x | x | ||||||||||
| 0x0E..0x1F | Caractères de contrôles | x | |||||||||||
| 0x20 | L'espace | x | x | x | |||||||||
| 0x21..0x2F | !"#$%&'()*+,-./ |
x | x | x | |||||||||
| 0x30..0x39 | 0123456789 |
x | x | x | x | x | |||||||
| 0x3a..0x40 | :;<=>?@ |
x | x | x | |||||||||
| 0x41..0x46 | ABCDEF |
x | x | x | x | x | x | ||||||
| 0x47..0x5A | GHIJKLMNOPQRSTUVWXYZ |
x | x | x | x | x | |||||||
| 0x5B..0x60 | [\]^_` |
x | x | x | |||||||||
| 0x61..0x66 | abcdef |
x | x | x | x | x | x | ||||||
| 0x67..0x7A | ghijklmnopqrstuvwxyz |
x | x | x | x | x | |||||||
| 0x7B..0x7E | {|}~ |
x | x | x | |||||||||
| 0x7F | DEL | x |
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 :