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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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