Cherche une fonction en C
£udo
Messages postés
455
Date d'inscription
Statut
Membre
Dernière intervention
-
£udo Messages postés 455 Date d'inscription Statut Membre Dernière intervention -
£udo Messages postés 455 Date d'inscription Statut Membre Dernière intervention -
salut, je cherche une fonction en C qui permettrait de savoir si ce qu'as saisi l'utilisateur est bien numérique. Y a t il une fonction qui verifie cela??
Sinon comment je pourrais faire ?
Merci
(¯`·.¸¸.-> £udo <-.¸¸.·´¯)
Sinon comment je pourrais faire ?
Merci
(¯`·.¸¸.-> £udo <-.¸¸.·´¯)
A voir également:
- Cherche une fonction en C
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule - Forum Bureautique
- Fonction remplacer sur word - Guide
6 réponses
Salut,
Je vois pas de fonction qui vérifie ça.
Mais bon admettons que tu récupères avec une variable char:
Tu peux vérifier que chaque caractère entré est bien un chiffre grâce à la correspondance ascii. De 48 à 57 c'est la correspondance ascii de 0 à 9, donc tu as juste à vérifier que chaque caractère se situe dans cet intervalle (hormis le '\0' de la fin).
Je vois pas de fonction qui vérifie ça.
Mais bon admettons que tu récupères avec une variable char:
char machin[32]; scanf("%s",machin);
Tu peux vérifier que chaque caractère entré est bien un chiffre grâce à la correspondance ascii. De 48 à 57 c'est la correspondance ascii de 0 à 9, donc tu as juste à vérifier que chaque caractère se situe dans cet intervalle (hormis le '\0' de la fin).
un style comme ça
La syntaxe a pas l'air bonne pour les codes ascii, je fais comment ?
(¯`·.¸¸.-> £udo <-.¸¸.·´¯)
char machin[32]; scanf("%s",machin); while (machin < 48 && machin >67) { printf ("erreur, recommencez !"): }
La syntaxe a pas l'air bonne pour les codes ascii, je fais comment ?
(¯`·.¸¸.-> £udo <-.¸¸.·´¯)
Non, en fait machin est un pointeur, donc ce que tu testes là c'est l'adresse vers laquelle il pointe, pas les valeurs du tableau contenues à cette adresse.
Ensuite avec while (machin < 48 && machin >67), (si machin représentait les caractères comme tu le pensait) si le premier caractère est un chiffre, la suite ne sera pas testée, et c'est plutôt || que && (un "ou" plutôt qu'un "et", une valeur ne peut pas être superieure à 67 et inférieure à 48 en même temps :o)
Essaie plutôt quelque chose comme:
Ensuite avec while (machin < 48 && machin >67), (si machin représentait les caractères comme tu le pensait) si le premier caractère est un chiffre, la suite ne sera pas testée, et c'est plutôt || que && (un "ou" plutôt qu'un "et", une valeur ne peut pas être superieure à 67 et inférieure à 48 en même temps :o)
Essaie plutôt quelque chose comme:
int str_size, i; char machin[32]; scanf("%s",machin); str_size=strlen(machin); for(i=0;i<str_size;i++) { if (machin[i] < 48 || machin[i] > 57) //C'est 57 pas 67 { printf("Attention, vous n'avez pas entré un entier"); i=str_size; // Raccourci pour sortir de la boucle } }
merci beaucoup, c'est ce que je voulais, ça marche comme je le voulais.
Merci de ton aide
(¯`·.¸¸.-> £udo <-.¸¸.·´¯)
Merci de ton aide
(¯`·.¸¸.-> £udo <-.¸¸.·´¯)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Encore un petit truc au passage, là ton entier est stocké en ascii.
Si tu le veux comme une valeur entière habituelle, tu peux le convertir avec atoi().
Et scanf c'était juste pour l'exemple, si c'est pour une application sérieuse je ne te le conseille pas. Ca t'oblige à utiliser une variable dont la taille est statique pour recevoir les caractères en entrée (char machin[32]), c'est une faille vulnérable aux buffer overflow.
Il y a d'autres solutions.
Si tu le veux comme une valeur entière habituelle, tu peux le convertir avec atoi().
Et scanf c'était juste pour l'exemple, si c'est pour une application sérieuse je ne te le conseille pas. Ca t'oblige à utiliser une variable dont la taille est statique pour recevoir les caractères en entrée (char machin[32]), c'est une faille vulnérable aux buffer overflow.
Il y a d'autres solutions.