Passage d'un tableau de caractères en argument d'une fonction

Bonjour
comme indiqué dans le titre, j'ai un problème pour passer un tableau de caractères en argument d'une fonction.
Le tableau contient une ligne d'un fichier csv et la fonction doit renvoyer un vecteur avec les chiffres (des bytes) que contient la ligne (séparés par un ';'). J'utilise un ESP32.

Ma ligne est déclarée comme ceci :
char buffer[50];
Ma fonction est appelée comme ceci :
std::vector<uint8_t> x = myVector.readVector (buffer, nFeatures, 2);
Et déclarée comme cela : c'est une boucle strtok standard

std::vector<uint8_t> csv_Vector::readVector (char *buffer, byte nFeatures, int norm)
{
	std::vector<uint8_t> x;
	char * pch = strtok(buffer, _separator);
	int k = 0;
	uint8_t y = 0;
	while (pch != NULL)
	{
	if (k == 0) y = atoi(pch);
	else {
		int u;
		if (k < nFeatures) u  = atoi(pch);
		else {
			u  = atof(pch) / norm;
			if (u > 255) u = 255;
		}
		x.push_back(u);
	}
	k++;
	pch = strtok(NULL, _separator);
	}
	x.push_back(y);
	return x;
}

Voici le début des messages du compilateur :

C:\Users***\Documents\Arduino\libraries\csv_Vector\csv_Vector.cpp: In member function 'std::vector csv_Vector::readVector(char*, byte, int)':

C:\Users\fa125436\Documents\Arduino\libraries\csv_Vector\csv_Vector.cpp:44:30: error: invalid conversion from 'char' to 'const char*' [-fpermissive]

char * pch = strtok(buffer, _separator);

sachant qu'ensuite il m'explique plein de choses sur l'utilisation d'une macro appelée EXFUN liée à strtok :

C:\Users***\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6/tools/sdk/include/newlib/string.h:42:15: note: initializing argument 2 of 'char* strtok(char*, const char*)'

char *_EXFUN(strtok,(char *__restrict, const char *__restrict));

Quelle est la bonne syntaxe pour mon problème ? Merci

c'est quoi _separator ?

C'est une variable interne de ma bibliothèque csv_Vector définie dans la fonction init. C'est un char qui contient ';' le séparateur des valeurs de la ligne csv.

strtok accepte plusieurs séparateurs, le 2ème argument est une chaîne.
char _separator[] = ";";

c'est le souci alors :slight_smile:

je dirais même

const char _separator[] = ";";

Yesss ...

En effet ça fonctionne maintenant. Merci les amis !

suivant l'Arduino avec le const vous optimiserez un peu l'usage de la RAM

Je l'ai mis.