Vérifier le saisie de 4 chiffres

marwamrewa Messages postés 175 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai un programme c qui compare le chiffre saisie du clavier avec celui deja //
enregistré, et je ne sais pas comment le modifier pour vérifier un code de 4 chiffres j'ai besoin de votre aide et merci d'avance :)

#include <16f877.h>
#include <LCD421.c>
#include <kbd1.c>
#include <stdio.h>
#use delay(clock=20000000)

void main()
{
char r=0;
char a;

char code[4];  // déclaration de la variable où on va enregistrer 
               // le code à 4 chiffres

a="1";         // supposé le code enregistré

lcd_init();    // initialisation de l'afficheur
kbd_init();    // initialisation du keypad

lcd_gotoxy(1,1);
printf(lcd_putc,"Tapez votre code"); 
lcd_gotoxy(1,2);


while(true)
{
  r=kbd_getc();   // lecture du keypad
  
  if(r!=0)
  {
     printf(lcd_putc,"%c",r);  
      if(r==a)
      {
         printf(lcd_putc,"\fcode correcte");    // le (\f) pour effacer le msg précédant
         output_high(pin_E0);
      }
  
      if(r!=a)
      {
         printf(lcd_putc,"\fcode incorrecte");
         output_high(pin_E1);
      }
   }
}
}

2 réponses

  1. marwamrewa Messages postés 175 Statut Membre 3
     
    je voudrais comparer un code composé de 4 chiffre avec un autre deja enregistré dans un pic !
    2
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Pour comparer, on utilise strcmp() !
      0
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    #include <LCD421.c>
    #include <kbd1.c>
    On n'importe pas de .c dans un code.

    void main() n'existe pas en C -> int main(void)

    a="1";
    Impossible. a n'est pas un pointeur. Plutôt a='1'.
    Mais que souhaites-tu ? Comparer des caractères ou des chaînes de caractères ? C'est différent.

    Il faudrait plutôt faire :
    char codeSaisie[4+1]; /*on garde une place pour le '\0'*/
    char codeSecret[4+1];

    Et pour comparer, tu pourras utiliser strcmp().

    Et n'oublie pas return 0;

    Cdlt,
    0