Problème avec un tableau de char

Nxl Messages postés 1038 Date d'inscription   Statut Membre Dernière intervention   -  
 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.
A voir également:

1 réponse

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
Nxl Messages postés 1038 Date d'inscription   Statut Membre Dernière intervention   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
Utilisateur anonyme > Nxl Messages postés 1038 Date d'inscription   Statut Membre Dernière intervention  
 
De rien

Bonne nuit :-)
0