Problème avec un tableau de char

Nxl Messages postés 1257 Statut Membre -  
 Utilisateur anonyme -
Bonjour,
j'essaye de coder une procédure qui fait défiler une chaîne de caractère de droite à gauche sur un écran LCD mais je rencontre un problème bizarre avec le tableau qui stocke la chaîne à faire défiler...
En effet l'indice 0 du tableau prend des nouvelles valeurs à chaque itération alors qu'à aucun moment il est affecté...
Voici le code, je précise que c'est du C pour un PIC 18 donc variables globales car presque pas de pile, et pour le moment c'est juste pour débugger, le tout sera sans doute mis dans une procédure...


int indiceLCD = 0;
int compteurBoucle = 0;
char interm = "";
const int tailleChaine = 7;
int indiceCaractereCourant = 0;
char charLCD[15] = {};
char chaine[tailleChaine] = "Bonjour";

WHILE (TRUE){
//rtos_run();

charLCD[15] = chaine[indiceCaractereCourant];

for(compteurBoucle = 0 ; compteurBoucle < 15 ; compteurBoucle++) {
charLCD[compteurBoucle] = charLCD[compteurBoucle+1];
indiceLCD = compteurBoucle;
indiceLCD ++;
lcd_gotoxy(indiceLCD, 1);
lcd_putc(charLCD[compteurBoucle]);
delay_ms(5);

}
compteurBoucle = 0;
indiceCaractereCourant = (indiceCaractereCourant + 1) % tailleChaine ;

Voilà le résultat, du coup il ré affiche le r car l'indice 0 de chaîne prend le caractère courant alors qu'il devrait être non changé, en revanche aucun problème avec les autres indices.

1 réponse

  1. Utilisateur anonyme
     
    Bonjour

    Attention ! charLCD[15] n'existe pas puisque charLCD est dimensionné à 15. On a donc des éléments de charLCD[0] à charLCD[14].

    Donc
    charLCD[15] = chaine[indiceCaractereCourant];
    est absolument illégal. Si les variables charLCD et chaine sont consécutives en mémoire, tu tapes en fait dans chaine[0].

    Dans ta boucle, compteurBoucle va de 0 à 14. Donc quand tu vas lire charLCD[compteurBoucle+1], tu sors de charLCD et tu vas à nouveau taper dans chaine[0].
    0
    1. Nxl Messages postés 1257 Statut Membre 133
       
      Merci beaucoup pour ta réponse !
      Désolé d'avoir posté pour une connerie comme ça...^^
      J'étais parti sur un délire métaphysique alors qu'en fait les variables étaient stockées à côté !
      Bonne soirée
      0
      1. Utilisateur anonyme > Nxl Messages postés 1257 Statut Membre
         
        De rien

        Bonne nuit :-)
        0