Partage
  • Partager sur Facebook
  • Partager sur Twitter

Chaine de caracteres arduino

Sujet résolu
    11 mars 2019 à 21:02:35

    Bonjour,

    Je suis de retour sur le forum d'Arduino car j'ai un petit problème avec la lecture d'une chaine de caractères. En fait, je veux tout simplement lire un mot, compter le nombre des lettres et l'afficher à l'inverse. J'arrive à le faire plus au moins sauf que je ne sais pas pourquoi avec le code ci-dessous, en utilisant Serial.println(i); ligne 21, il m'affiche bien le mot inverse. En révanche si je supprime la ligne 21, il m'affiche la lettre "o". En plus, si j'utilise la lige 20 et 21 j'obtiens des caractères bizarres comme par exemple le moniteur série et arduino ont des valeurs en bauds différentes. 

    char mot[]="Arduino";      // chaîne de 7 caractère + NULL = 8
    char result[] = "";            // declaration d'un chaine de 8 caract.
    
    void setup()
    {
      Serial.begin(9600);
      Serial.println(mot);
    
      int pos = 0;
      int longeur = 0;
    
        while(mot[pos])
           pos++;
         Serial.println(pos);  
         Serial.println();  
         pos = pos - 1;
    
       for (int i = pos; i >= 0; --i)
            {
             // Serial.println(" je suis en For");  
              Serial.println(i);  
              result[pos - i] = mot[i];
            }
           Serial.println("Exit FOR"); 
            Serial.println(pos); 
      result[pos + 1] = '\0';
       Serial.println(result);
    }
    
    
    void loop()
    {
      
    }
    



    -
    Edité par CiprianMalaes 11 mars 2019 à 21:09:27

    • Partager sur Facebook
    • Partager sur Twitter
    La vie, c'est comme une une bicyclette, il faut avancer pour ne pas perdre l'équilibre.
      11 mars 2019 à 23:00:00

      Quand tu déclares ta variable comme ceci:

      char result[] = "";  

      Le compilateur n'alloue qu'un tableau d'une case (pour le `\0` qui termine la chaîne). Et quand tu dépasses les bornes d'un tableau en écriture, pleins de trucs peuvent se passer dont un semblant de fonctionnement normal dans certains cas.

      Tu peux allouer un tableau d'une taille prédéfinie (ex: "char result[sizeof mot];") ou allouer dynamiquement le tableau avec new ou malloc, en le libérant avec delete ou free, respectivement.



      -
      Edité par alexisdm 11 mars 2019 à 23:00:34

      • Partager sur Facebook
      • Partager sur Twitter
        12 mars 2019 à 20:31:34

        Merci  beaucoup pour ta réponse, je vais m'approcher, du coup, de tutoriel sur le langage C pour comprendre leur fonctionnement. :)

        -
        Edité par CiprianMalaes 12 mars 2019 à 20:32:24

        • Partager sur Facebook
        • Partager sur Twitter
        La vie, c'est comme une une bicyclette, il faut avancer pour ne pas perdre l'équilibre.

        Chaine de caracteres arduino

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown