int
qui doit soit être la valeur EOF
, soit être une valeur représentable dans un unsigned char
.
Comme on ne sait pas si char
est un type signé ou non, ces fonctions s'utilisent donc ainsi:
isXXX((unsigned char) c)
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.
Certaines valeurs de 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.
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 manuscule correspondant | |
int | toupper (int c) |
caractère majuscule correspondant |
int isalnum | ( | int | c | ) |
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.
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.
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.)
int isdigit | ( | int | c | ) |
int isgraph | ( | int | c | ) |
isalnum(c) || ispunct(c)
.
int islower | ( | int | c | ) |
int isprint | ( | int | c | ) |
c == ' ' || isgraph(c)
.
int ispunct | ( | int | c | ) |
isgraph(c) && !isalnum(c)
.
int isspace | ( | int | c | ) |
int isupper | ( | int | c | ) |
int isxdigit | ( | int | c | ) |
int tolower | ( | int | c | ) |
c
pour lequel islower() est vrai si isupper(c) et s'il existe un tel caractère
c
sinon.int toupper | ( | int | c | ) |
c
pour lequel isupper() si islower(c) est vrai et s'il existe un tel caractère
c
sinon.