Initialiser un tableau et déclarer plus tard

Bonjour,

Dans mon programme Arduino, j'ai un tableau que je déclares comme ceci, au début de mon programme:

String equipes[] = {};

Et que je remplis après (dans une fonction configurerTableau(), que je lances une fois):

equipes[i][0]

i est un indice qui peut aller de 0 à un nombre donné (par exemple 6).
Dans ce champs, j'ai un entier (int).

Cependant, lorsque je souhaites afficher ce tableau dans mon moniteur série, j'ai soit un vide, soit un point interrogation...

J'ai essayé avec atoi(), ça me retourne tout le temps 0.

Que faire...

Bonjour,

  • Quand tu définis un tableau (sauf c'est un tableau de constantes), il faut définir sa taille (sinon il va faire une taille 0).
String equipes[10];
  • Ensuite tu peux initialiser élément par élément.
equipes[0]="bleu";
equipes[1]="rouge";

J'entends bien, mais comment faire si on ne connait pas la taille avant ?

Par exemple, mon tableau ici, s'appel equipes.
On ne connait pas sa taille, cependant, cette taille est rentrée manuellement par l'utilisateur (via moniteur série), et c'est à partir de là que je veux lui donner sa taille définitive.

Le truc, c'est que ce tableau doit être accessible sur plusieurs de mes fonctions.

Salut,

Quand j'ai ce genre de tableaux à gérer, je prévois la taille maximale qu'il pourrait avoir au cours de son utilisation et le déclare ainsi :

String equipes[taille_max_imaginable];

Bon, il faut aussi prévoir la taille des chaînes de caractères, car on n'est pas sur un PC avec mémoire extensible. Sur un PC, une chaine de caractères peut être casée sur plusieurs zones de mémoire, pas sur arduino...

Si chaque chaîne de equipes[] fait 11 caractères que tu prévois une taille max de 50, ça va te bouffer 50 x (11 +1) = 600 octets de ram... donc méfiance :wink:

Ok, merci à tout les deux !

On peut allouer dynamiquement un tableau avec new ou malloc(), mais là on entre dans la programmation un peu avancée.
Tu peux faire comme le conseille Super_Cinci utiliser une taille max (de toute façon quelle que soit la méthode tu seras limité par la taille de la mémoire)