C/C++ Tableaux de caractères - plantage après une égalité.
Bonjour à tous
Mon programme fonctionnant avec des String, pour être plus "conforme" aux règles c/c++, j'ai voulu le modifier avec des tableaux de caractères. Et là aie aie aie, ça plante après une égalité. J'essaie d'expliquer tout cela.
J'ai 3 tableaux:
Code:
1 2 3
| char mpec[10][8]; //10 manips de 0 à 9 8 char par manip (manip en cours)
char pg[10][80]; //10 programmes horaire de 10 manips de 8 char
char memLu[80]; //stockage manips d'un programme horaire enregistré en SPIFFS |
Une commande permet de choisir A pour sélectionner le programme horaire à partir du SPIFFS ou B pour le sélectionner à partir du tableaux des programmes horaires déjà chargé en RAM:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| //***************chargement du programme en cours np[1]=Numéro de Programme**********
void chargeProgEnCours(char* np){ // 3 P A/B P=programme A=lu en SPIFFS B=lu en RAM
char fic[8]; sprintf(fic,"/P%c.txt%c",np[1],'\0'); //nom de fichier "/Px.txt"
progEnCours=ci(np[1]); //conversion char en numeric
ok=false;
uint8_t i,j;
if(!(progEnCours>=0 && progEnCours<10)){
afficErreurs(MSG9);
}
else{
if(np[2]=='A'){ //lecture SPIFFS 80 caractères
lectureFichier(fic);
for(i=0;i<10;i++){
for(j=0;j<8;j++){ //mpec = manip en cours
mpec[i][j]= memLu[i*8 + j]; //0-7 8-15 16-23 ....72-79 charge 10 fois 8 octets dans mpec[0 a 9]
}
}
for(i=0;i<80;i++){
pg[progEnCours][i] = memLu[i]; //plantage après i=79
}
ok=true;
}
else if(np[2]=='B'){ //lecture RAM (80 caractères)
for(i=0;i<10;i++){
for(j=0;j<8;j++){
mpec[i][j] = pg[progEnCours][i*8 + j]; //plantage après i=9 j=7
}
}
ok=true;
}
}
} |
Les manip d'un programme horaire sont chargées à la queue leuleu: 0 à 7, 8 à 15, jusqu'à 72 à 79.
Le plantage réinitialise l'ESP32.
Dans les deux cas c'est après avoir écrit ou lu la dernière case du tableau pg.
Une aide serait appréciable. Merci