0
votes

Comment autoriser uniquement les chiffres à entrer dans un tableau?

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 isdigits () mais cela ne semble pas fonctionner. Voici mon code jusqu'à présent.

y a-t-il d'autre moyen de le faire sans utiliser isDigits () ? xxx


2 commentaires

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)) { est comparant phonenum [i] à 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 probablement si (isdigit (phonenum [i]) == 0) { à la place.


4 Réponses :



0
votes

Vous devez utiliser scanf ("% 10s", phonenum); et inclure également #include qui contient isdigit () Méthode.


0 commentaires

0
votes

Comme Abdelaziz a déclaré, vous devez utiliser est isdigit () , pas isdigits () . En outre, votre instruction IF est fausse: xxx

devrait être: xxx


0 commentaires

1
votes

scanf_s ("% 10s", phonenum); code> échoue car il manque un argument. Examinez votre scanf_s () code> Documentation.


Je ne recommande pas 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);
     }


0 commentaires