Bonjour,
voila, je travaille sur un système embarqué ( donc je suis limité en memoire)auquel on peut intervenir sur un ecran de PC et il y a 2 types d'utilisateurs, l'administrateur qui peut faire des changements de config et l'utilisateur normal qui ne peut que voir les config.
j'ai fait une fonction Users_mode() où il y a un test avec des if et un while ( il y a 5 tentatives de tests ), j'ai utilisé un scanf , je sais pas si c'est l'ideal ? Aurais-je dû utiliser un switch ?
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 void Users_mode() { unsigned char choiceuser; unsigned char pass[5]; int num_tries =0; typeutil=0; //var. testé plus loin pour afficher un type de menu selon l'utilisateur printf("Would you like to enter in administrator mode (Y/N) ?\n\n"); // scanf("%c",&choiceuser); choiceuser=getchar0(); //0705 if((choiceuser=='Y')||(choiceuser=='y')) { while (num_tries<5) { if (num_tries==0) printf("You must enter a password : \n\n"); else printf("You must enter a valid password : \n\n"); scanf("%s", pass); num_tries++; if(strcmp(pass, "abcd") == 0) { typeutil = 1; printf("You are in administrator mode \n"); num_tries=5; //flag pour dire de sortir } else { typeutil = 0; printf("Not correct password \n\n"); } } } if((choiceuser=='N')||(choiceuser=='n')) { typeutil = 0; } }
J'ai un probleme lorsque je saisie un nombre de caractères superieur à 'abcd' par exemple si je tape 'efskjdhl' alors automatiquement je ne repasse plus dans le while et je sors de ma fonction alors que num_tries ne vaut que 1 ??
Mon problème c'est, je pense, le scanf il fait outre passer le while ?
J'ai 3 questions:
Ma 1ère question comment faire en sorte de pouvoir faire les 5 tests quoi que l'on tape sur le clavier et bien sur sortir de la fonction dès qu'on aura saisie 'abcd' ?
Ma 2ème question quel est l'algorithme par excellence pour faire des test de saisies claviers de manière profesionnelle et avec des conditions pour tester un certains nombres de fois ou indefinement jusqu'à saisir le bon mot de passe par exemple?
Ma 3 ème question dans des fonctions de tests quand recours-t'on à l'utilisation de getchar() et de switch-case() ?
Merci
Partager