Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2016-09-07 08:35:31 comparaison de chaines de caracteres

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

comparaison de chaines de caracteres



Bonjour.

Dans le programme qui suit je voudrais comparer le numéro entrant aux numéros de la liste.
je pense que le problème vient des "string et des char "mais je ne trouve pas pourquoi.
Merci.


Code (P5) :

char *fichier_tel[]={"0265383785", "0693008050", "0160201524"};
char recu[15]; 
String num_entrant; 
int i; 
int led=3;

void setup(){ 
      Serial.begin(9600); 
      pinMode(led,OUTPUT);
      } 

void loop()	{ 
   
      i = 0 ; 
      while ( Serial.available()>0 )      { 
            recu[i] = Serial.read(); 
            num_entrant += recu[i]; 
            i++; 
            delay(100); 
      } 
      if (i>0)	{ 
        Serial.println(num_entrant);
                            
                            
                        
     for(int j=0;j<3;j++){
 
       if(num_entrant==fichier_tel[j]){
         digitalWrite(led,HIGH);
         }
         else{
             digitalWrite(led,LOW);
           }
   
}
}
}

Hors ligne

 

#2 2016-09-07 10:18:49 Re : comparaison de chaines de caracteres

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: comparaison de chaines de caracteres



Bonjour,

Attention de poster dans la bonne catégorie, tu demandes un coup de main avec Arduino et non Processing.

Pour ton problème, tu essaies de comparer une c_string avec un objet String.
Pourquoi ne pas tout passer avec des objets String ?
De plus pour la comparaison des chaînes de caractères, il est nécessaire d'utiliser les méthodes propres aux objets, ici la méthode equals(). Avec l'opérateur == tu compares l'adresse des pointeurs de ces objets.

Attention tu vas avoir un problème pour vérifier, la led peut s'allumer et s'éteindre aussitôt.

String fichier_tel[] = {"0265383785", "0693008050", "0160201524"};
char recu[15];
String num_entrant;
int i;
int led = 3;

void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

void loop() {
  i = 0 ;
  while (Serial.available() > 0) {
    recu[i] = Serial.read();
    num_entrant += recu[i];
    i++;
    delay(100);
  }
  if (i > 0) {
    Serial.println(num_entrant);
    for (int j = 0; j < 3; j++) {
      if (num_entrant.equals(fichier_tel[j])) {
        digitalWrite(led, HIGH);
      } else {
        digitalWrite(led, LOW);
      }
    }
  }
}

Hors ligne

 

#3 2016-09-08 05:38:00 Re : comparaison de chaines de caracteres

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: comparaison de chaines de caracteres



Merci pour ton aide,et pour les explications.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024