MOT DE PASSE

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 15 nov. 2005 à 22:04
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 - 16 nov. 2005 à 00:03
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

juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
16 nov. 2005 à 00:03
Pour le rendre portable
#IF DEF
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 nov. 2005 à 23:09
Clem, à 'mdp[MAX] = ...' on écrit sur ce qui suit, c'est l'erreur absolue en C.
cs_Clem Messages postés 282 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 12 février 2007
15 nov. 2005 à 23:00
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
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 nov. 2005 à 22:04
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.
Rejoignez-nous