ISCNTRL |
Est-ce un contrôle ? |
---|---|
Langage C++ | cctype (ctype.h) |
Syntaxe
int iscntrl(int caractere) |
Paramètres
Nom | Description |
---|---|
caractere | Ce paramètre permet d'indiquer le caractère à vérifier |
Description
Cette fonction indique si le caractère est un caractère de contrôle.
Remarques
- La fonction iscntrl() renvoie une valeur différente de zéro si caractere est compris entre 0x00 et 0x1F ou est égal à 0x7F (DEL); sinon, zéro est retourné.
- Définition et rôle : La fonction iscntrl est définie dans l'entête <cctype> et permet de tester si un caractère est un caractère de contrôle. Les caractères de contrôle sont ceux qui ne produisent pas d'affichage visible, comme les retours à la ligne, tabulations, et caractères de contrôle ASCII (0 à 31 et 127).
- Caractères considérés comme "de contrôle" : Les caractères de contrôle comprennent : Les caractères ASCII de 0 à 31 (ex: \n (10), \t (9), \r (13), \b (8)). Le caractère ASCII 127 (DEL, utilisé pour la suppression). Ces caractères ne sont pas affichables et sont principalement utilisés pour le formatage du texte ou la communication entre systèmes.
- Différence avec isprint() : La fonction isprint() est l'inverse de iscntrl(). Elle permet de vérifier si un caractère est affichable. Ainsi, pour un même caractère c, l'expression suivante est toujours vraie :
- Impact des locales : iscntrl ne dépend pas des locales contrairement à d'autres fonctions comme isalpha(). Elle fonctionne uniquement sur la base de l'ensemble de caractères ASCII ou UTF-8 selon l'environnement. Les caractères de contrôle restent les mêmes quelle que soit la langue utilisée.
- Gestion des entrées utilisateur : iscntrl peut être utile pour détecter des caractères invisibles indésirables lors de la saisie utilisateur. Exemple :
- Utilisation dans le traitement de fichiers : Lorsqu'on traite des fichiers, iscntrl permet de détecter des caractères de contrôle pouvant affecter l'affichage ou la lecture des données. Exemple d'utilisation dans un fichier :
- #include <iostream>
- #include <fstream>
- #include <cctype>
- int main() {
- std::ifstream file("data.txt");
- char c;
- if (!file) {
- std::cerr << "Erreur d'ouverture du fichier." << std::endl;
- return 1;
- }
- while (file.get(c)) {
- if (iscntrl(c))
- std::cout << "Caractère de contrôle détecté dans le fichier !" << std::endl;
- }
- file.close();
- return 0;
- }
Cela permet de filtrer les caractères invisibles dans une chaîne de texte.
Cela peut être utile pour filtrer des caractères indésirables dans une application.
Cela peut aider à repérer des caractères invisibles perturbant la structure du fichier.
Exemples
Voici un exemple permettant de remplacer les caractères de contrôles par des espaces :

on obtiendra le résultat suivant :
Voici un simple texteL'exemple suivant, comme \n est un caractère de contrôle, le programme affichera "Le caractère est un caractère de contrôle" :
Voir également
Langage de programmation - C - Référence de procédures et fonctions - iscntrl
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 732.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 151.