begin process at 2012 05 29 12:45:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Système

 > 

Autre

 > 

mon programme redemmare dans l'utilisation de saisie caractères


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

mon programme redemmare dans l'utilisation de saisie caractères

dimanche 10 juin 2007 à 17:52:51 | mon programme redemmare dans l'utilisation de saisie caractères

develdelphi

Bonjour

voici un programme qui permet de faire une saisie de mot de passe jusqu'à 8 caractères, il fonctionne très bien avec DevC++ mais j'utilise un système embarqué donc un compilateur dedié aux microcontrolleurs et j'ai des soucis à cause de ça, voici mon code :




#include <string.h>
#include <stdio.h>
 
#define BEL 7
#define BS 8
 
int verifie_passe (char const tentative[])
{
   char const passe[] = "sesame";
   return strcmp (tentative, passe) == 0;
}
 
void lire_mp (char *tampon, size_t size)
{
   size_t i = 0;
   char lettre;
 
   while ((lettre = getch ()) != '\r')
   {
      if (lettre == BS)
      {
         if (i > 0)
         {
            putch (lettre);
            putch (' ');
            putch (lettre);
            i--;
         }
         else
         {
            putchar (BEL);
         }
      }
      else
      {
         if (i < size - 1)
         {
            tampon[i] = lettre;
            i++;
            putch ('*');
         }
         else
         {
            putchar (BEL);
         }
      }
   }
 
   tampon[i] = 0;
}
 
void Users_mode (void)
{
   unsigned char choiceuser;
   int typeutil = 0;
   printf ("Would you like to enter in administrator mode (Y/N) ?\n\n");
 
   choiceuser = getchar ();
   if ((choiceuser == 'Y') || (choiceuser == 'y'))
   {
      char pwd[8];
      do
      {
         printf ("\nEntrez le mot de passe :\n");
         lire_mp (pwd, sizeof pwd);
      }
      while (verifie_passe (pwd) == 0);
      printf ("\nbienvenue\n");
 
      typeutil = 1;
      printf ("You are in administrator mode \n");
 
   }
 
   if ((choiceuser == 'N') || (choiceuser == 'n'))
   {
      typeutil = 0;
      //printf("You aren't in administrator mode \n");
   }
}
 
int main (void)
{
   Users_mode ();
   return 0;
}
 

 

Avec mon compilateur C51 Keil µVision 2 lorsque la fonction lire_mp() est appelée ( je l'ai verifié avec debug ) mon prgramme redemarrait?
C'est je crois un problème de code dans le getch du while de la fonction lire_mp():



while ((lettre = getchar ()) != '\r')
   {
      if (lettre == BS)
      {

         if (i > 0)
         {
            putchar (lettre);
            putchar (' ');
            putchar (lettre);
            i--;
         }
         else
         {
            putchar (BEL);
         }
      }
      else
      {

         if (i < size - 1)
         {
            tampon[i] = lettre;
            i++;
            putchar ('*');
         }
         else
         {
            putchar (BEL);
         }
      }

   }


en effet en ayant mis getchar à la place de getch, ça va deja mieux car le programme ne redemarre pas mais enfait il ne faut
sans doute pas utliser getchar mais getch() mais mon compilateur Keil C51 redemarre quand j'arrive a cet endroit du code
et le resultat sur capture d'écran est bizarre :

Would you like to enter in administrator mode (Y/N) ?
 
y
Entrez le mot de passe :
se*s*a*s*m*e*s*s
sesmed
 
seememds
s
sme
e
e

 

On ne sort plus de la saise et après le 7 ème étoile on entend le beep à chaque saisie sur le clavier indefiniment je ne voit pas comment faire ?




DevelDelphi :)

lundi 11 juin 2007 à 14:59:31 | Re : mon programme redemmare dans l'utilisation de saisie caractères

Loki6

Membre Club
salut,

je voulais savoir ce que sont BS et BEL et pourquoi est ce que ta fonction lire_mp est de cette forme ? que cherches tu à faire d'autre que lire les caractères ?

Loki
mardi 12 juin 2007 à 00:32:12 | Re : mon programme redemmare dans l'utilisation de saisie caractères

develdelphi


En fait ce que je veux c'est :

1)
d'abord lancer la fonction Users_mode au lancement du programme afin de demander si on veut entrer en mode administrateur. si on repond yes on doit rentrer un mot de passe sinon on sort et on continu normalement dans le reste du programme.

2)
donc si on repond yes j'appelle une autre fonction (lire_mp()) qui elle permet de masquer le caractère saisie par des "*" et deplus permet de beeper si il y a plus de 8 caractères saisies.

Et ce 2 eme paragraphe avec la fonction lire_mp() se repetera tant que
ce qu'on aura tapé au clavier ne correspond pas au mot de passe valide et ce via un while qui appelle la fonction verifie_passe().

voila plus concretement.


#define BEL 7
#define BS 8


BEL c'est pour beeper si le nombre de caracteres depasse 8  (BS).

mon compilateur genere un warning  car ne reconnait pas le conio.h. 
Que dois je faire pour que mon programme ne reboot pas ?

Merci

mardi 12 juin 2007 à 08:02:47 | Re : mon programme redemmare dans l'utilisation de saisie caractères

Loki6

Membre Club
ben écoute, j'ai créé un projet console et mis ton code et tout marche nickel...

Loki
mardi 12 juin 2007 à 08:05:16 | Re : mon programme redemmare dans l'utilisation de saisie caractères

Loki6

Membre Club
ça te dit quoi à propos de conio.h ? d'habitude, ça met une erreur plutôt qu'un warning quand ça ne trouve pas le fichier.

Loki
mardi 12 juin 2007 à 11:25:18 | Re : mon programme redemmare dans l'utilisation de saisie caractères

develdelphi


Salut Loki,

Moi aussi avecDevC++ je vois que ça marche nickel.
Voila mon compilateur Keil C51 µVision2 me donne un warning seulement et il compile bien mais donc c'est à cause du conio.h et donc du getch().

Il faut que je fasse un autre algorithme plus simple avec les meêms options, focntionnalités mais comment ?
Ou bien implementer une autre routine tel que le getch() ??

Merci
mardi 12 juin 2007 à 14:21:35 | Re : mon programme redemmare dans l'utilisation de saisie caractères

Loki6

Membre Club
scanf ? avec ca seul stdio.h est nécessaire il me semble

Loki


Cette discussion est classée dans : passe, char, lettre, mode, putchar


Répondre à ce message

Sujets en rapport avec ce message

Crash a l'execution mais non en mode de debuggage [ par cybermatthieu ] La si je roule le programme avec le mode de debugage tout fonctionne a merveille il termine l'execution normalement. Mais si je roule le programme ( s chui en BUGG depuis et sans reponse [ par louatiamin ] pour ceux ki ne connaisse pas TC++ 3.0(sous dos) et ne connaisse rien sur les librairie statique ou bien le mode real 16bits c est vraiment unitile d Pendu en C [ par the_kaiser ] Voila je suis débutant en C (en programmation tous cours d'ailleurs puisque le C est le premier language que je teste) et je tente de faire un pendu. Arbre Binaire. Probleme de concatenation [ par YnOThAr ] Bonjour tout le monde ! La fin de l'année arrive et avec elle vient la fin des projets...généralement inachevés. En ce moment je travail sur la compre Besoin Aide sur mon programme [ par knockner ] Voici mon programme je n'arrive pas a trouver mon erreurs , le programme se lance il faut appuyer 2 fois sur entrée , et des que l'on rentre une lettr Pointeurs et tableau de pointeurs [ par dragon3x6 ] Salut à la communauté des developpeurs C,j'essai d'écrire un bout de code qui enregistre une liste de mots dans une structure de type arbre.Lorsqu'un Je cherche l'erreur [ par ScorpionTiti ] J'ai effectué un programme qui me permette d'écrire dans un fichier et je l'ai compilé. En le lançant, il m'envoie un message d'erreur mais je ne sais 1ère lettre d'un char groupes[16] [ par maevasa ] comment fait on pour voir la premièe lettre d'un char ?Merci d'avance Maeva Afficheur LCD sous 16F887 [ par RENTMEESTERS ] Bonjour à tous, J'ai un projet réunissant un PIC 16F887 et un afficheur LCD. J'ai donc un LCD.h que voici : [code=cpp]#define RS RB4 #d


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales