MOT DE PASSE

Signaler
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34656-mot-de-passe

Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Pour le rendre portable
#IF DEF
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Clem, à 'mdp[MAX] = ...' on écrit sur ce qui suit, c'est l'erreur absolue en C.
Messages postés
282
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
12 février 2007

je ne vois pas le problème, un mot de passe est de taille fixe, et le tableau est remplit de 0 jusqu'a MAX-1, il n'écrase rien si ce n'est un octet non utilisé.

Mais il a y quand même plusieurs choses à revoir :
Il vaudrait mieux un unsigned char plutôt qu'un simple char, même si la définition des octets de façon aléatoire ne pose pas de problème ici (ne dépasse pas 127). A propos de l'aléatoire, c'est quoi cette fonction ? utilise une macro au pire, mais en plus une fonction n'utilisant que des int et des double, pour obtenir un char ??
Un #define hasard(a, b) rand%(b-a)+a serait bien plus propre

Et ce qui serait bien c'est de placer les variables en hors global, déclare les dans tes fonctions même plutôt.



for (i=0;i<MAX;i++)
{
if (mdp[i]!=demande[i]) return 1;
else return 0;
}
il sert à quoi le for la ?
ok tu t?es trompé, tu voulais pas mettre plutôt :
for (i=0 ; i<MAX ; i++)
if (mdp[i] != demande[i]) return 1 ;
return 0 ;

mais autant utiliser les fonctions de stdio, strcmp/stricmp !

ça serait bien de faire une vérification des arguments, et faire plusieurs cas du programme, genre ?createrandompassword qui ferait le mot de passe, et sans arguments le demanderait.

Ah, et dernière chose, il faut toujours éviter les appels system
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Tu déclares:
char mdp[MAX];
et il y a plus bas:
mdp[MAX]='\0';
là tu écrases du monde à coup sur.
Je ne vais pas plus loin.

Faudra revoir tableaux et pointeurs.
Je ne conserverai pas cette source.

Bonne continuation.