Pointeurs de tableaux char, j'aimerais comprendre

Bonjour,

J'ai tout d'abord ce simple croquis; qui bien entendu, fonctionne sans problèmes

void setup() {
  Serial.begin(115200);
  char Chaine1[] = "ceci est une chaine (tableau) de caractères" ;
  Serial.println(Chaine1) ;
  Serial.println() ;
}
void loop() {}

Maintenant, je voudrais passer ce tableau à une fonction via son pointeur. Si j'ai bien compris, on l'envoie via la syntaxe &Chaine1 et il est réceptionné par *pVariable (ici *pSource) comme ceci :

void Liste( *pSource ) {
  //rien pour le moment
}

void setup() {
  Serial.begin(115200);
  char Chaine1[] = "ceci est une chaine (tableau) de caractères" ;
  Serial.println(Chaine1) ;
  Serial.println() ;
  Liste( &Chaine1);
}

void loop() {}

Mais j'ai ceci comme erreur :


L01_07_les_pointeurs:2:11: error: variable or field 'Liste' declared void
 void Liste( *pSource ) {
           ^
L01_07_les_pointeurs:2:14: error: 'pSource' was not declared in this scope
 void Liste( *pSource ) {
              ^~~~~~~
D:\Cloud\Google Drive\_Develop\arduino\codes\_Formation\01 Introduction\L01_07_les_pointeurs\L01_07_les_pointeurs.ino: In function 'void setup()':
L01_07_les_pointeurs:11:3: error: 'Liste' was not declared in this scope
   Liste( &Chaine1);
   ^~~~~
exit status 1
variable or field 'Liste' declared void

Merci de m'éclairer !

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

void Liste(char *pSource ) {
void Liste(const char *pSource ) {

La première version peut se permettre de modifier la chaîne.
La deuxième version garantit qu'elle ne la modifiera pas.

  // l'appel se fait ainsi :
  Liste(Chaine1);

Merci @hbachetti Ce premier problème résolu, comment puis-je exploiter la chaine transmise, caractère par caractère ? Comment trouver la taille du tableau puisque pSource n'est qu'un pointeur de 2 octets ?
Dois-je transmettre cette taille à la fonction ?
Merci d'avance !


@UKHeliBob Désolé : J'ai posté ma question après une recherche dans le forum complet. Il manque le choix de la section de la langue.

Si c'est une C-string elle est forcément terminée par un caractère '\0'.
Les manières classiques :

// avec index
for (int i = 0 ; pSource[i] != '\0' ; i++) {
}
// sans index
for ( ; *pSource != '\0' ; pSource++) {
}

strlen()

Tu devrais te renseigner sur les c-strings.
https://www.tutorialspoint.com/c_standard_library/string_h.htm
https://en.wikibooks.org/wiki/C_Programming/String_manipulation

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.