Voila pour les besoin de mon tp j'ai crée une fonction qui lit un float strictement positif du clavier, en contrôlant chaque touche appuyer et en ne lassant passé que les 0-9, le point une et une seul fois, Backspace pour effacer, Entrée pour terminé la saisie s'il y a au moins 1 caractère entré, et enfin Echap si l'utilisateur annule la saisie.
la fct retourne 0 si l'utilisateur annule la saisie.
La fct semble marcher correctement seulement je la trouve pas tres belle et je ne suis pas sur qu'elle sois sur si vous pouviez m'aider a l'améliorer
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 float getFloat() { int pos = 0; float nb = 0.; char touche, point = 1, nbStr[500]; do { if (kbhit()) { touche = getch(); if(((touche >= '0' && touche <= '9') || (touche == '.' && point)) && (pos < 499)) { printf("%c",touche); if(touche == '.') point = 0; nbStr[pos] = touche; pos++; nbStr[pos] = '\0'; sscanf(nbStr,"%f",&nb); } else if (touche == 27) { return 0; } else if (touche == 8 && pos > 0) { pos--; if(nbStr[pos] == '.') point = 1; nbStr[pos] = '\0'; sscanf(nbStr,"%f",&nb); printf("\b \b"); } } }while(touche != 13 || nb == 0.); return nb; }
Partager