Boucle

Résolu
cs_erwan35 Messages postés 57 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 21 avril 2006 - 12 oct. 2004 à 21:36
stephane_1979 Messages postés 9 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 14 octobre 2004 - 14 oct. 2004 à 09:04
bonjour à tous,

Je demande votre indulgence face à un nouveau langage nouveau pour moi!

Voici ma question:

je voudrais que quand on rentre un mot de passe incorrect, le code reboucle sur la question, pour l'instant j'ai fais ça le programme continue quelque soit le mot de passe!

Merci d'avance pour votre aide!

Erwan

{
char password[3];
char mdp[5] = "erwan";

int chk(char *str3,char *str4) {
int max = strlen(str3);
int i = 0;
while (i < max) {
if (str3[i] != str4[i]) return 0;
i++;
}
return 1;
}

do
{
rep=Saisie_chaine (password,1,6,8,3,TRUE,MODE_CLAV|MODE_SECRET); } while ((rep !ENTER) && ((chk(password,mdp)) 1));

}

13 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
12 oct. 2004 à 22:08
char mdp[5] = "erwan";
==>
char mdp[] = "erwan";

ca devrais provoquer une erreur (la chaine contient 6 caracteres en contant le '\0' final), et te casse pas les neurones pour rien

evite aussi les fonctions imbriqué, c'est une extension du langage supporté par ton compilateur (sans doute gcc, devcpp ? )

int chk(char *str3,char *str4)

> utilise strcmp (declarée dans string.h), retourne 0 si les 2 chaines sont identiques
3
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
12 oct. 2004 à 22:09
#include <stdio.h>
#include <string.h>

#define pass "erf"
int main(int argc, char* argv[])
{
char buf[16];
do {
printf("Donnez le mot de passe:",buf);
gets(buf);
} while (strcmpi(pass,buf) && buf[0]);
return 0;
}


N'hésites pas à lire un tuto sur le C.
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
12 oct. 2004 à 22:14
malheur ! jamais gets !

man gets

prefere fgets + tableau + sizeof pour eviter les frissons
0
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
12 oct. 2004 à 22:21
Mouais, je ne vois pas spécialement en quoi le gets() pose problème mais bon...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
12 oct. 2004 à 22:27
ca fais pas de controle de bord, c'est connu comme truc (surtout par les hackeur) pour ecrire ou on veut sans demander l'autorisation

bref si jamais l'utilisateur tape plus de 15 caractere (lorsqu'on saisie au clavier<->stdin, vaut mieux tou prevoir ), tu ecris sur la pile
0
Hades53 Messages postés 231 Date d'inscription mercredi 12 février 2003 Statut Membre Dernière intervention 7 juillet 2009
12 oct. 2004 à 22:32
Ok merci pour l'info ;)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
12 oct. 2004 à 22:41
typiquement tu fais

char buff[SIZE];

fgets( buff, sizeof buff, stdin );

et tu peux dormir tranquille !

pour les memes raisons scanf( "%s", buff ); n'est pas recomandé
0
stephane_1979 Messages postés 9 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 14 octobre 2004
13 oct. 2004 à 10:00
Salut a tous,

Tiens si tu veux un TRES bon exemple de gestion de pasword, va voir la :
http://www.cppfrance.com/code.aspx?ID=10980

Dans cet exemple au moins ton password est crypté grace a un CRC8.

Ps : change le "char * message={""};" en "char * login={""};"
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
13 oct. 2004 à 10:15
Un ptit conseil, n'utilises jamais de #define "erwan", un simple désassemblage permettrait de retrouver facillement le mot de passe.
Génére le automatiquement ou alors trouves un autre systeme, mais ne le mets jamais en constantes!

Shell
0
stephane_1979 Messages postés 9 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 14 octobre 2004
13 oct. 2004 à 10:41
C'est clair JAMAIS de password en clair comme ca !
0
cs_erwan35 Messages postés 57 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 21 avril 2006
13 oct. 2004 à 20:10
Effectivement, c'était bien un problème de longueur de chaine!

Merci à tous pour vos réponses!

En fait ce n'est pas génant si le mot de place est en clair car ce programme est utilisé sur un terminal portable lecteur de code barre. De plus l'impact n'est pas des plus grand (c'est pas le password de lancement de la bombe atomique lol!)

Quelqu'un aurait-il un bon totorial sur le C++ parce que...
...J'ai vraiment du boulot!!!

@+

Erwan
0
stephane_1979 Messages postés 9 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 14 octobre 2004
14 oct. 2004 à 09:03
tiens ici : http://c.developpez.com/cours/#c

Tu trouvera plien de cours sur le C et le C++
0
stephane_1979 Messages postés 9 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 14 octobre 2004
14 oct. 2004 à 09:04
tiens ici
Tu trouvera plien de cours sur le C et le C++
0
Rejoignez-nous