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;
}
}
4 Réponses :
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;
}
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 code> 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
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;
}
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 Vous prenez une entrée de réseau de caractères comme une chaîne, en utilisant 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> trajeyasize; code> à trahisasize [max_size_of_the_array]; code>. % s et sans passer l'adresse, c'est-à-dire sans & code>. 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;
}
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
Préfère en utilisant isdigit code> 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
votre
scanf ("% c", & faysize); code> 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