Bonjour,
je cherche les codes ASCII pour contrôler les nombres.
le programme est fait en langage c
merci pour l'aide
Bonjour,
je cherche les codes ASCII pour contrôler les nombres.
le programme est fait en langage c
merci pour l'aide
Qu'appelles-tu "contrôler" les nombres ?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Les "codes ASCII" ne "contrôlent" pas "les nombres". Que veux-tu faire exactement ?
Pas de Wi-Fi à la maison : CPL
désolée c'est un mal entendu
voilà mon code
je veux contrôler les nombres pour qu'elles soient juste des chifferes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #include<stdio.h> #include<stdlib.h> int control_nombre(int); int main() { int nombre_club; printf("\n\ncombien du club voulez vous saisir\n\n\n"); printf("le nombre doit être entre 1 et 50 \n"); scanf("%d",&nombre_club); nombre_club = control_nombre(nombre_club); system("pause"); return 0; } int control_nombre(int x) { while(x <= 0 || x > 50 ) { if(x <= 0) { printf("\n\n\nerreur 1:le nombre doit etre superieur a zero \n"); printf("Merci de re-entrer le numero du club\n"); } if(x > 50) { printf("\n\n\nerreur 2:Le nombre doit etre inferieur a 50 \n"); printf("Merci de re-entrer le numero du club\n"); } scanf("%d",&x); } printf("\n\n\nSaisie ok\n\n\n"); return x; }
dans ce code quand je compile quand je tape une lettre il boucle infinment et même un caractère spéciaux
merci pour l'aide et un autre désolée
a vous relire
Pas de Wi-Fi à la maison : CPL
Et je me permet de rajouter que tu n'as pas besoin d'avoir une table asci pour ce que tu fais, il me semble...
Si, comme Emmanuel Delahaye le conseille, tu utilises fgets() + strtol(), tu obtiens un entier que tu pourras tester.
Sinon, pour complément d'info, si tu avais fais fgetc, tu aurais obtenu un caractère qu'il aurait effectivement fallu tester avec par exemple :
La table ascii t'aurais alors éventuellement été utile. Pour avoir la table ascii, si tu travailles sous Linux, ou Unixoide, tu peux taper man ascii.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(c >= '0' && c <= '9')
Bonjour à tous,
C'est juste, par contre tu es contraint de boucler 2 fois sur ta condition quand tu saisis un nombre.
Pour info, tu as une table ascii à cette adresse.
Salut
Stay in touch
merci a vous
Theirry m'a corrigé le programme
le voilà
il y a quelque truc pas compris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 #include <stdio.h> #include <stdlib.h> void purge(void) { int c; while ((c = fgetc(stdin)) != '\n' && c != EOF) { } } long saisir_entier(char const *message, long min, long max) { long ret; int err; do { int c; err = 0; if (message != NULL) { printf("%s ", message); fflush(stdout); } if (scanf("%ld", &ret) != 1) { err = 1; } c = getchar(); if (c != '\n' && c != EOF) { err = 1; purge(); } } while (err != 0 || ret < min || ret > max); return ret; } int main(void) { int nombre_club; nombre_club = saisir_entier("le nombre doit être entre 1 et 50 :", 1, 50); printf("Le nombre saisi vaut %d\n", nombre_club); return 0; }
si vous pouvez me l'explique volontaire .
1.je n'ai pas réussi à la comprendre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void purge(void) { int c; while ((c = fgetc(stdin)) != '\n' && c != EOF) { } }
2.jamais vu que ça veux dire
Code : Sélectionner tout - Visualiser dans une fenêtre à part fflush(stdout);
3.pour quoi on a déclaré ces deux variable
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 long ret; int err;
4.a vous relire
-La fonction fgetc() sur stdin te sert à lire un caractère saisi au clavier (si stdin a sa valeur par défaut).
Code : Sélectionner tout - Visualiser dans une fenêtre à part while ((c = fgetc(stdin)) != '\n' && c != EOF)
-(c = fgetc(stdin)) sert à 2 choses: en premier, tu affectes à c la valeur lue par fgetc(), en deuxième, à récupérer cette valeur pour la tester, ce qui te permet de tester c dans la suite de ta condition (dans c != EOF par exemple).
donc quand tu testes (c = fgetc(stdin)), c'est comme si tu testais c sauf qu'à ce moment précis, il n'a pas la valeur que tu souhaites, donc il vaut mieux évaluer l'expression.
-'\n': saut de ligne (sous-entendu, tu considères que la touche 'ENTER' qui est représenté par le caractère '\n' doit être considéré comme une fin de saisie).
-EOF: fin de fichier. Effectivement, je trouve cela curieux de tester EOF sur stdin, sachant qu'EOF n'a pas de code ASCII...si l'auteur du code veut bien m'expliquer ça serait sympa
Stay in touch
cette fonction sert à vider le buffer d'entré (généralement le buffer du clavier).
cette fonction sert à vider explicitement le buffer de sortie (généralement le buffer de l'écran), on s'en sert surtout quand un printf() ne se termine pas par '\n'.
ret est la variable retournée à la fonction appelante, et err sert à gérer les erreurs dans la fonction.
EOF correspond généralement à -1, on peut l'insérer via Ctrl+d.
"The quieter you become, the more you are able to hear"
"Plus vous êtes silencieux, plus vous êtes capable d'entendre"
Stay in touch
Stay in touch
EOF n'est pas la 'fin de fichier', mais le code retourné par le fonction de lecture fgetc() quand une fin de lecture se produit. Cette fin de lecture peut être provoquée par :
- une erreur de lecture
- la fin de fichier
Pour en revenir à ta question, il ne faut pas oublier que stdin est un flux, et qu'il peut être redirigé à partir d'un fichier texte :
un EOF peut donc bien se produire, donc le cas est prévu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part * monappli < mescommandes.txt
Pas de Wi-Fi à la maison : CPL
Effectivement, merci pour ces ultimes précisions
Stay in touch
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager