Bonjour,

En ayant fait un code de saisie de mot de passe lequel permet d'une part de masquer les caractères saisies et deplus avertit si le nombre de caractères à saisir est dépassé. Le programme compile très bien sous DevC++

Ma première question est-ce que le code n'est pas trop lourd aurais je pu faire ça en une ou deux fonctions simples?

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
 
#include <conio.h>
#include <string.h>
#include <stdio.h>
 
#define BEL 7
#define BS 8
 
 
unsigned int typeutil; 
 
int verifie_passe(char tentative[])
{
   char passe[] = "sesame";
   int pos_caractere = 0;
   do
   {
      if (passe[pos_caractere] != tentative[pos_caractere])
         return 0;
      pos_caractere++;
   } while (passe[pos_caractere] != '\0');
   return 1;
}
 
char *lire_mp (void)
{
   static char tampon[8];
   size_t i = 0;
   char lettre;
 
   while ((lettre = getch ()) != '\r')
   {
      if (lettre == BS)
      {
         if (i > 0)
         {
            putch (lettre);
            putch (' ');
            putch (lettre);
            i--;
         }
         else
         {
            putchar (BEL);
         }
      }
      else
      {
         if (i < sizeof tampon - 1)
         {
            tampon[i] = lettre;
            i++;
            putch ('*');
         }
         else
         {
            putchar (BEL);
         }
      }
   }
 
   tampon[i] = 0;
   return tampon;
}
 
void Users_mode()
{
unsigned char choiceuser; 
unsigned char pass[5]; 
int num_tries =0;  
typeutil=0;   
printf("Would you like to enter in administrator mode (Y/N) ?\n\n");   
 
  choiceuser=getchar();  
   if((choiceuser=='Y')||(choiceuser=='y'))     
   {  
   char tentative[81];
   char *pwd;
   do
   {
 
      printf("\nEntrez le mot de passe :\n");
      pwd = lire_mp ();
   } while (verifie_passe(pwd) == 0);
   printf("\nbienvenue\n");
 
            typeutil = 1;
            printf("You are in administrator mode \n"); 
 
   }
 
   if((choiceuser=='N')||(choiceuser=='n'))
   {
	typeutil = 0;
    //printf("You aren't in administrator mode \n"); 
   }
}
 
int main()
 
{
    //unsigned int typeutil; 
    Users_mode(); 
    getchar();
    getchar();
    return 0;
 
}
Et ma seconde question c'est que travaillant dans un système embarqué à base de microcontrolleur j'ai un compilateur specifique, mon compilateur est Keil C51 µVisoin2 quand je compile ce code j'ai un warning :

*** WARNING C318 IN LINE 25 OF ADC.c: can't open file 'conio.h'

Et puis j'ai un problème d' error :

error C267: 'putch': requires ANSI-style prototype

à ce niveau de mon code :

putch (lettre);



en utilisant ceci: puts (lettre);

alors j'ai ce problème :

ADC.C(1147): error C214: illegal pointer conversion


Je ne sais pas comment integrer ce code ?


Merci