classer et transformer des caractères Plus de détails...
Fonctions | |
int | isalnum (int c) |
test pour les caractères alphanumériques | |
int | isalpha (int c) |
test pour les caractères alphabétiques | |
int | iscntrl (int c) |
test pour les caractères de contrôle | |
int | isdigit (int c) |
test pour les chiffres | |
int | isgraph (int c) |
test pour les caractères graphiques | |
int | islower (int c) |
test pour les minuscules | |
int | isprint (int c) |
test pour les caractères imprimables | |
int | ispunct (int c) |
test pour les caractères de ponctuation | |
int | isspace (int c) |
test pour les blancs | |
int | isupper (int c) |
test pour les majuscules | |
int | isxdigit (int c) |
test pour les chiffres hexadécimaux | |
int | tolower (int c) |
caractère miniscule correspondant | |
int | toupper (int c) |
caractère majuscule correspondant |
Cet entête déclare des fonctions utilisées pour classer et transformer des caractères. Elles prennent toute un paramètre de type int
qui doit soit être la valeur EOF
, soit être une valeur représentable dans un unsigned char
. L'entête <wctype.h> contient des fonctions équivalentes traitant des caractères larges.
Comme on ne sait pas si char
est un type signé ou non, ces fonctions s'utilisent donc ainsi:
isXXX((unsigned char) c)
si on veut leur passer un argument contenu dans un char
. Naturellement, si l'argument est contenu dans un int
et a le bon format, par exemple parce qu'il contient le résultat de fgetc(), aucun cast n'est nécessaire.
Ces fonctions dépendent toutes de la locale en cours sauf isdigit() et isxdigit().
Le diagramme suivant (inspiré de celui de The Standard C library) montre les relations entre les différentes classes de caractères, et la manière dont les caractères du jeu de caractères de bases sont classés. Les locales (même la locale "C") peuvent ajouter des caractères aux classes marquées d'un *. Les locales autres que "C" peuvent ajouter des caractères aux classes marquées d'un +. En grisé, le graphe montre comment une locale "C" pourrait classer les caractères ASCII.
char
peuvent n'être dans aucune classe, soit qu'elles n'ont aucune interprétation dans la locale en cours, soit qu'elles n'ont de signification qu'en tant que partie d'un caractère multibyte. int isalnum | ( | int | c | ) |
vrai pour les caractères alphanumériques.
isalpha(c) || isdigit(c)
. int isalpha | ( | int | c | ) |
Outre ceux pour lesquels islower() ou isupper() sont vrai, les locales peuvent considérer comme caractères alphabétiques d'autres caractères pour lesquels iscntrl(), isdigit(), ispunct() et isspace() doivent alors être faux.
vrai pour les caractères alphabétiques.
Dans la locale "C", il n'y a pas de caractères autres que ceux pour lesquels islower() ou isupper() sont vrai.
int iscntrl | ( | int | c | ) |
Les caractères de contrôles sont ceux qui n'occupent pas de position sur un périphérique de sortie mais servent à contrôler son fonctionnement.
vrai pour les caractères de contrôle.
N'est pas équivalent à c!= EOF && !isprint(c)
même si isprint() et iscntrl() ne peuvent pas être vrai simultanément: les valeurs de char
ne correspondant à aucun caractère dans la locale en cours et celles n'étant permises que comme partie d'un caractère multibyte ont iscntrl(c) faux. (Dans The standard C Library, P.J. Plauger donne l'impression qu'il peut y avoir encore d'autres cas mais je n'en connais pas d'exemples.)
Au mimimum vrai pour \b, \a, \t, \v, \f, \n, \r. Même la locale "C" peut ajouter des caractères à cet ensemble.
int isdigit | ( | int | c | ) |
vrai pour les chiffres décimaux: 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9.
Le résultat de cette fonction ne dépend pas de la locale en cours.
int isgraph | ( | int | c | ) |
vrai pour tout caractère imprimable sauf l'espace.
Équivalent à isalnum(c) || ispunct(c)
.
int islower | ( | int | c | ) |
vrai pour les caractères alphabétique bas de casse.
Dans la locale "C", il s'agit des lettres a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y et z. Dans les autres locales, il peut y avoit d'autres caractères pour lesquels iscntrl(), isdigit(), ispunct() et isspace() doivent alors être faux.
int isprint | ( | int | c | ) |
vrai pour les caractères imprimables, qui occupent une position sur un périphérique de sortie.
Équivalent à c == ' ' || isgraph(c)
.
int ispunct | ( | int | c | ) |
vrai pour les caractères de ponctuations définis comme étant les caractères imprimables sauf l'espace et les caractères alphanumériques.
Équivalent à isgraph(c) && !isalnum(c)
.
Au minimum vrai pour ! " # \% & ' ( ) ; * + , - . / : ; < = > ? [ \\ ] ^ _ { | } ~. Même la locale "C peut ajouter des caractères à cette classe.
int isspace | ( | int | c | ) |
vrai pour les blancs
Dans la locale "C", les blancs sont l'espace, '\f', '\n', '\r', '\t' et '\v'. Les autres locales peuvent ajouter des caractères à cette classe. À noter que les blancs peuvent être aussi bien des caractères de contrôle que des caractère imprimables.
int isupper | ( | int | c | ) |
vrai pour les caractères hauts de casse.
Dans la locale "C", il s'agit des lettres A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y et Z. Dans les autres locales, il peut y avoir aussi d'autres caractères pour lesquels iscntrl(), isdigit(), ispunct() et isspace() doivent alors être faux.
int isxdigit | ( | int | c | ) |
vrai pour les chiffres hexadécimaux: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, a, b, c, d, e, f.
Le résultat de cette fonction ne dépend pas de la locale en cours.
int tolower | ( | int | c | ) |
un caractère correspondant à c
pour lequel islower() est vrai si isupper(c) est vrai et s'il existe un tel caractère
c
sinon.Il n'est pas obligatoire que tout caractère pour lequel isupper() est vrai ait un caractère correspondant pour lequel islower() est vrai. Voir des exemples de la situation symétrique dans la description to toupper().
int toupper | ( | int | c | ) |
un caractère correspondant à c
pour lequel isupper() est vrai si islower(c) est vrai et s'il existe un tel caractère
c
sinon.Il n'est pas obligatoire que tout caractère pour lequel islower() est vrai ait un caractère correspondant pour lequel isupper() est vrai. Par exemple le jeu de caractères ISO-8859-1 a au moins trois caractères dans ce cas: ÿ, µ et ß. La forme majuscule des deux premiers est absente du jeu de caractères. La forme majuscule du troisième est non seulement absente du jeu de caractères, elle n'est pas employée par les locuteurs de l'allemand qui utilisent SS ou SZ (le choix dépendant non seulement du mot dans lequel la lettre se trouve, mais aussi d'usages régionaux).