Erreur de suivi des lignes de code [Résolu]

Messages postés
1
Date d'inscription
vendredi 21 octobre 2016
Statut
Membre
Dernière intervention
21 octobre 2016
-
Bonjour,
Je me consacre beaucoup de temps à programmer et je suis tombé sur un pépin.
Je souhaiterai protéger mes données sur un système qui crée un code aléatoire à chaque mauvais essai ce qui pourrai rendre inaccessible mes données à celui qui n'a pas mon mot de passe. Après la compilation et le débogage, je rentre un mot de passe random et je m'aperçoit que le code continue comme si le if et le else if n'existait pas. Il y à certainement également un erreur de codage pour la génération aléatoire du mot de passe (genre table Ascii, ou autre chose).
J'ai mis mon extrait du code qui pose problème.
PS: Je code sur Code::Blocks.
Merci d'avance.
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main()
{
     int nombreEntre, nombreDonne  = ('#*ThomasR62');
     int MAX = 10000000, MIN = 1;
     srand(time(NULL));
     nombreDonne = (rand() % (MAX - MIN +1)) + MIN;

     while(nombreEntre != nombreDonne)
     {
         printf("Donnez le mot de passe. \n\n");
         scanf("%s", &nombreDonne);
         if (nombreEntre = nombreDonne)
            printf("C'est le bon mot de passe");

         else if (nombreEntre != nombreDonne)
            printf("Choose a random password");
            nombreDonne = (rand() % ( MAX - MIN + 1)) + MIN;


     }



     printf("L'adresse de le variable est : %p", &nombreDonne);

     do
     {
         if (time > 30)
            nombreDonne = (rand ()% ( MAX - MIN + 1)) + MIN;

     }while (nombreEntre != nombreDonne);

     return 0;
}
Afficher la suite 

1 réponse

Messages postés
3821
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 août 2019
86
0
Merci
Bonjour.

As-tu regardé les warnings que ton compilateur t'a remonté ? Il doit y en avoir un nombre assez élevé au vu du code, et la solution t'es souvent donnée dans ceux-ci.

Je vais essayer de lister un peu tous les soucis:
  • Mettre ('#*ThomasR62') dans un entier, ça n'a pas de sens. Les parenthèses ne servent à rien, et la constante mis entre guillemets simples est un caractère invalide. En plus, tu réaffectes cette variable juste derrière, donc ça ne sert vraiment à rien.
  • Tu fais un scanf %s avec un entier. Soit tu fais un scanf %i, soit tu gardes le %s, mais tu mets nombreDonne en tant que chaine de caractères.
  • if (nombreEntre = nombreDonne) => Attention ne pas confondre affectation (=) et comparaison (==).
  • else if (nombreEntre != nombreDonne) => ne sert à rien ici. Un simple "else" suffit. Pas besoin de comparer ce que l'on sait déjà.

Commenter la réponse de cptpingu