Erreur de suivi des lignes de code

Résolu
iGeaRs_YT Messages postés 1 Date d'inscription vendredi 21 octobre 2016 Statut Membre Dernière intervention 21 octobre 2016 - Modifié par iGeaRs_YT le 21/10/2016 à 18:42
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 22 oct. 2016 à 13:48
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;
}

1 réponse

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
22 oct. 2016 à 13:48
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à.

0
Rejoignez-nous