-1
votes

Comment vérifier l'entrée contient des caractères non chiffres?

Bonjour à tous ceux que je suis nouveau à c, j'ai une question sur la façon de vérifier l'entrée si contient des caractères non numériques.

Voici mon code: P>

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

int main(void){
 char arraySize;
 scanf("%c",&arraySize);
 if(!isdigit(arraySize)){
  printf("BADINPUT\n");
 }else{
  return 0;
 }
}

c

1 commentaires

votre scanf ("% c", & faysize); ne ramasse qu'un caractère, je pourrais d'abord lire la taille de la chaîne, puis lisez la chaîne d'entrée


4 Réponses :


2
votes

vous donnez! avant isdigit (). C'est pourquoi vous obtiendrez une mauvaise sortie.

Votre déclaration de nom var est pire. Vous pouvez renvoyer Bello Code - >> P>

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
     int main(){
            char input_character;
            scanf("%c",&input_character);
            if(isdigit(input_character)){
                printf("BADINPUT\n");
            }else{
                  printf("\nGood Input\n");
            }
      return 0; 
        }


4 commentaires

Votre code ne résout pas le problème de l'OP. Il veut vérifier le caractère non chiffre dans une chaîne, pas seulement un personnage. En outre, op veut imprimer badinput au cas où il contient un caractère non chiffre. Vous codez exactement en face pour même un seul caractère


Merci de répondre, mais ce n'est pas ce que je demande


@Kanzakiariaecho je n'ai pas eu votre question ??? Voulez-vous vérifier pour une matrice entier? Ensuite, je vous donnerai une solution pour le tableau de charcuterie. Vous devez vérifier chaque caractère jusqu'à '\ 0'.


Je veux chiffrer seulement pas comme 45x



1
votes

isdigit (c) est une fonction en C qui peut être utilisée pour vérifier si le caractère transduit est un chiffre ou non .Pour vérifier des caractères non numériques dans une chaîne de relevements de boucle de chaîne est requis.

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

int main(void)
{
    char str[]="4xyz";
    int count =0;
    for (i=0; str[i]!= '\0'; i++) 
    { 
      if (isdigit(str[i]) != 0) 
      {
          count++;
      }
    if(count)
    {
        printf("BADINPUT\n");
    }else
    {
        printf("GOODINPUT\n");
    }
    return 0;

}


0 commentaires

1
votes

Tout d'abord, vous devez prendre un tableau de caractères comme entrée car vous passez dans "XYZ" ou "4XYZ", qui est une chaîne (collection de caractères) mais pas un seul caractère. Pour cela, changez trajeyasize; code> à trahisasize [max_size_of_the_array]; code>.

Vous prenez une entrée de réseau de caractères comme une chaîne, en utilisant % s et sans passer l'adresse, c'est-à-dire sans & code>. p>

Puis, vous devez exécuter une boucle pour vérifier si l'un des caractères de la matrice de caractères est un DIGIT, si vous trouvez même un seul chiffre dans le tableau de caractères, vous imprimez "Badinput". Et si même un seul chiffre existe dans le tableau de caractères, vous imprimez "bonne entrée". P>

Le code final devrait donc ressembler à ceci: P>

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

#define MAX 1000
// can take any value, i.e. the maximum size of the array

int main() {
  // you can also assign a more suitable name to the array.
  char arraySize[MAX];
  scanf("%s", arraySize);
  int i;
  for (i=0; arraySize[i]!='\0'; ++i) {
    if (isdigit(arraySize[i])) {
      printf("BADINPUT\n");
      return 0;      
    }
  }
  printf("GOOD INPUT\n");
  return 0;
}


0 commentaires

1
votes

Vous lisez simplement le premier personnage de votre appel Scanf. isdigit uniquement des chèques pour un caractère. Vous pouvez faire quelque chose comme ça xxx


4 commentaires

Préfère en utilisant isdigit plutôt que de vérifier le code ASCII comme vous ne sauriez pas ce qui serait le caractère codant.


J'ai changé la réponse depuis que OP a également utilisé Isdigit (), mais ISDigit () s'attend à ce que les caractères ASCII sont corrects


Spécifications de ISDigit semble différer de votre hypothèse


Quote: La fonction ISDigit () doit vérifier si c est un caractère de chiffre de classe dans le local actuel de la catégorie