Y a-t-il un moyen facile d'appeler un script C pour voir si l'utilisateur entrait une lettre de l'alphabet anglais? Je pense à quelque chose comme ceci: Je veux vérifier pour vous assurer que l'utilisateur n'entre pas une lettre, mais entre dans un numéro. Se demandant s'il existe un moyen facile de tirer chaque lettre sans taper manuellement dans chaque lettre de l'alphabet :) p> p>
7 Réponses :
#include <ctype.h> if (isalpha(variable)) { ... }
Vaut la peine de noter que isdigit () code> est plus utile ici.
Impressionnant. Que serait-il de vérifier le numéro et l'alpha?
Quels sont *, /, -, +,% (opérateurs de mathématiques) définis comme? alpha, chiffres ou autre chose?
Si je vérifie Alpha et Num, est-ce que j'inclus une autre bibliothèque?
Les opérateurs de mathématiques sont considérés comme une ponctuation (vérifiée avec la fonction ISPUNCT ()). Toutes ces fonctions sont incluses dans CTYPE.H comme l'exemple montre.
Hmm. Comment cela ressemblerait-il dans une déclaration de cas?
Vous ne pouvez pas appeler des fonctions en tant que cases-checkers dans C. Vous devez utiliser si / else si / sinon pour tester plusieurs choses à la fois et avoir manipulé différemment.
Oh ok, parfait. Donc, si j'utilise un étui de commutation mais que vous voulez vérifier si elles entrent en lettre / numéro, je vais simplement mettre le si / sinon pour vérifier en haut, puis mettre le commutateur / le boîtier en dessous. Ça va enfin ensemble :)
Il est préférable de tester des chiffres numériques décimaux eux-mêmes au lieu de lettres. isdigit .
#include <ctype.h> if(isdigit(variable)) { //valid input } else { //invalid input }
Mis à part la fonction Isalpha, vous pouvez le faire comme ceci:
char vrbl; if ((vrbl >= 'a' && vrbl <= 'z') || (vrbl >= 'A' && vrbl <= 'Z')) { printf("You entered a letter! You must enter a number!"); }
Qu'est-ce que vous avez contre les voyelles? Si vous voulez supprimer la signification de vos noms de variables, vous pourriez aussi bien aller avec 'v'.
Isalpha () testera un personnage à la fois. Si l'utilisateur saisit un numéro comme 23a4, vous souhaitez tester chaque lettre. Vous pouvez utiliser ceci:
bool isNumber(char *input) { for (i = 0; input[i] != '\0'; i++) if (isalpha(input[i])) return false; return true; } // accept and check scanf("%s", input); // where input is a pointer to a char with memory allocated if (isNumber(input)) { number = atoi(input); // rest of the code }
int strOnlyNumbers(char *str) { char current_character; /* While current_character isn't null */ while(current_character = *str) { if( (current_character < '0') || (current_character > '9') ) { return 0; } else { ++str; } } return 1; }
Le strto * () code> Les fonctions de la bibliothèque sont utiles ici:
Vous pouvez également le faire avec quelques conditions simples à Vérifiez si un caractère est alphabet ou non ou vous pouvez également utiliser des valeurs ASCII P>