Probleme fonction d'authentification

Fermé
marouan - 30 nov. 2009 à 18:13
 le père - 1 déc. 2009 à 09:03
Bonjour, jaimerai bien avoir de laide a propo dune fonction ; jai un probleme au niveau de l'execution
voici la fct : void login(char id[20], char pw[20])
{

int i;
int found = false;
int temp;


for(i=1 ;i < NB_USERS_MAX; i++)
{
if(strcmp( id, USERS[i].id) != 0)
{
if(strcmp(pw , USERS[i].pw) != 0)
{
found = true;
temp = i;
strcpy(id,USERS[temp].id);}

else found = false;
}
else found = false;

i++;
}
}

c une fct pour le login dan un system dexploitation multi utilisateur
merci davance

1 réponse

Bonjour

As-tu lu l'aide sur la fonction strcmp avant de poser ta question ici ?
Tu l'utilises à l'envers. Elle rend 0 en cas d'égalité et autre chose en cas de différence.
De plus, tes "else found =false;" ne devraient pas exister. Quand tu auras trouvé un "bon" utilisateur, tu auras mis found à true, mais au tour suivant de ta boucle, tu le remettras à false ! ça m'étonnerait que ce soit l'effet recherché.
De plus, tu as i++ dans ton instruction for, mais aussi quelque part à l'intérieur. Donc dans certains cas, ton compteur va augmenter de 2 en un seul tour.
Enfin, avec for(i=1 ;i < NB_USERS_MAX; i++) tu ne testes que NB_USERS_MAX-1 utilisateurs. Il aurait fallu commencer par i=0 ou faire <=, ça dépend de comment tes tableaux sont déclarés et utilisés.
D'ailleurs, il ne me semble pas très logique de faire la boucle sur un nombre max d'utilisateurs, la faire sur le nombre d'utilisateurs réel me semblerait plus normal. Mais ça peut marcher comme ça si les informations concernant les utilisateurs inexistants sont correctement effacées.
J'en oublie sans doute

c une fct pour le login dan un system dexploitation multi utilisateur Tu es sur la bonne voie pour refaire Windows :-))))
0