Problème avec un tableau de char
Nxl
Messages postés
1038
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
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...
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.
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:
- Problème avec un tableau de char
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
1 réponse
Bonjour
Attention ! charLCD[15] n'existe pas puisque charLCD est dimensionné à 15. On a donc des éléments de charLCD[0] à charLCD[14].
Donc
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].
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].
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
Bonne nuit :-)