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

iGeaRs_YT 1 Messages postés vendredi 21 octobre 2016Date d'inscription 21 octobre 2016 Dernière intervention - 21 oct. 2016 à 18:41 - Dernière réponse : cptpingu 3785 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 18 avril 2018 Dernière intervention
- 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;
}
Afficher la suite 

1 réponse

Répondre au sujet
cptpingu 3785 Messages postés dimanche 12 décembre 2004Date d'inscriptionModérateurStatut 18 avril 2018 Dernière intervention - 22 oct. 2016 à 13:48
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.