J'essaie donc d'écrire un programme qui reçoit un numéro de téléphone à 10 chiffres de l'utilisateur.
Il ne faut que 10 caractères seulement.
Il ne peut être composé que de chiffres. La saisie d'un caractère alphabet ou de caractère spécial donnera un message d'erreur.
J'ai essayé d'utiliser la fonction y a-t-il d'autre moyen de le faire sans utiliser isdigits () code> mais cela ne semble pas fonctionner.
Voici mon code jusqu'à présent. isDigits () code>? p>
4 Réponses :
Je pense que la fonction dont vous avez besoin est isdigit () code> A>, pas isdigits () code>. p>
C'était une faute de frappe, ne fonctionnait toujours pas si je le répare. Je me demande maintenant s'il existe un moyen de valider qu'un tableau n'a qu'un chiffre sans utiliser cette fonction.
Vous devez utiliser scanf ("% 10s", phonenum); code> et inclure également #include isdigit () Code> Méthode. P>
Comme Abdelaziz a déclaré, vous devez utiliser est isdigit () , pas devrait être: p> isdigits () code>.
En outre, votre instruction IF est fausse:
Je ne recommande pas scanf_s ("% 10s", phonenum); code> échoue car il manque un argument. Examinez votre scanf_s () code> Documentation.
scanf_s () code>. Au lieu de cela, évitez de mélanger les E / S utilisateur avec validation d'entrée. Obtenez l'entrée, puis validez-le. P> char buf[80]; // Be generous.
if (fgets(buf, sizeof buf, stdin)) {
buf[strcspn(buf, "\n")] = '\0'; // Lop off potential \n
// OK we have the input, now validate.
char phoneNum[11];
int n = 0;
// Use sscanf, isdigit, or ...
if (sscanf(buf, "%10[0-9]", phoneNum, &n) == 1 && n == 10 && buf[n]==0) {
puts("Success");
} else {
printf("Bad input <%s>\n", buf);
}
D'abord, la fonction est isdigit () et seconde, vous devez écrire uniquement le personnage que vous souhaitez enregistrer dans les accolades, ISDigit (phonenum [i]) == 0 ..
si (isdigits (phonenum [i] == 0)) { code> est comparantphonenum [i] code> à zéro, puis vérifiez si le résultat de la comparaison, qui sera 1 ou 0, est un personnage de chiffre ... ce qu'il ne sera jamais. Vous voulez probablementsi (isdigit (phonenum [i]) == 0) { code> à la place.