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