Maison > développement back-end > C++ > le corps du texte

Dois-je utiliser char ou int pour la validation des entrées en C ?

Susan Sarandon
Libérer: 2024-10-28 22:30:30
original
443 Les gens l'ont consulté

 Should I use char or int for input validation in C?

isdigit(c) - Utilisation de char vs. int pour la validation des entrées

Lors de l'examen de votre code, qui vise à valider la saisie de l'utilisateur en tant que chiffre, la question se pose : quel doit être le type de variable d'entrée - char ou int ?

Comprendre ce dilemme nécessite de se plonger dans les subtilités de la fonction isdigit en C. Contrairement à son nom, isdigit attend un argument entier, soulevant des inquiétudes quant à la compatibilité avec l'entrée char.

L'explication réside dans l'histoire de C, en particulier getchar(), qui récupère les caractères sous forme d'entiers pour prendre en compte à la fois le code de caractère et les codes d'erreur (valeurs négatives représentant EOF). Cette conception crée des problèmes de compatibilité avec les caractères, qui peuvent être signés ou non signés selon le compilateur.

Les caractères signés présentent un défi car les valeurs négatives se chevauchent avec EOF, conduisant potentiellement à des erreurs. Ainsi, isdigit et les fonctions associées nécessitent une entrée traitée comme un caractère non signé pour garantir la positivité.

Pour garantir la compatibilité, modifiez votre code comme suit :

<code class="c">if(isdigit((unsigned char)c))</code>
Copier après la connexion

De plus, il est crucial de vérifier que le flux d'entrée est valide avant d'utiliser c car un flux fermé pourrait le laisser non initialisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal