Bonjour,
je cherche une alternative a scanf afin de récupérer une information entrer par l'utilisateur (un float), ou, une lettre ("q" pour quitter le programme), ce que scanf ne me permet pas.
Merci
Bonjour,
je cherche une alternative a scanf afin de récupérer une information entrer par l'utilisateur (un float), ou, une lettre ("q" pour quitter le programme), ce que scanf ne me permet pas.
Merci
strtod() et getchar() devraient faire l'affaire.
Cordialement.
merci, voici le code que j'ai réalisé avec vos indications et l'aide d'un tutoriel.
Si vous voyez quelque chose qui ne va pas, ou si vous avez des optimisations à proposer...
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 #include <stdio.h > #include <ansi_c.h> void clean(const char *buffer, FILE *fp); int main() { char chaine[20] = ""; float erf=0; float x=0; char* fin = NULL; int quit=0; do { printf("Entrez une valeur pour x, ou 'q' pour quitter:\n"); fgets(chaine, sizeof(chaine), stdin); clean(chaine, stdin); if ((chaine[0]==113) ||(chaine[0]==81) ) exit(quit) ; x=strtod(chaine, &fin); printf("Chaine: %s, nombre: %lf\n", chaine, x); } while (quit==0) ; return 0; } //___________________________________________________________________ void clean(const char *buffer, FILE *fp) { char *p = strchr(buffer,'\n'); if (p != NULL) *p = 0; else { int c; while ((c = fgetc(fp)) != '\n' && c != EOF); } }
Salut,
Sinon tu peu tester la valeur renvoyée par la fonction scanf(...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 float test = 0.0 ; char touche = 0 ; printf("Entrez un float, ou 'q' pour sortir: ") ; if(scanf("%f", &test)) { printf("Vous avez entré %.2f\n", test) ; } else if(scanf("%c", &touche)) { if(touche=='q') printf("Vous avez quitté l'application.\n") ; else printf("Vous avez frappé : %c", touche) ; }
Partager