Ciao, sono alle prime armi con Arduino / C e non riesco a odificare un array di stringhe passate a una funzione.
ho una variabile String url che contiene l'indirizzo richiesto in GET.
// recupero numero di / presenti nella stringa
int numberOfSlashes = getNumberOfSlashes(url);
String *paths[numberOfSlashes];
parseUrlSegments(url, paths, numberOfSlashes);
Ho provato passando l'array paths per riferimento in modo da poterlo modificare dalla funzione.
void parseUrlSegments(String url, String *paths[], int numberOfSlashes) {
for(int i = 0; i < numberOfSlashes; i++) {
int indicePrimoSlash = url.indexOf('/');
paths[i] = url.substring(0, indicePrimoSlash);
url = url.substring(indicePrimoSlash + 1);
}
}
l'errore che mi viene mostrato è:
ArduinoREST.ino: In function 'void parseUrlSegments(String, String**, int)':
ArduinoREST:122: error: cannot convert 'String' to 'String*' in assignment
Ripeto, con quell'asterisco, NON è un vettore di String.
String * paths[numberOfSlashes];
Toglilo e risulterà cosi:
String paths[numberOfSlashes];
Poi la funzione, passandogli un vettore/array con le quadre, già dici che è un array, quindi ANCHE li quell'asterisco non serve:
void parseUrlSegments(String url, String paths[], int numberOfSlashes) {
Inoltre quando si passa un array come parametro, è come passarlo per referenza (puntatore di nascosto) e perciò gli elementi li puoi modificare.
In alternativa puoi anche scrivere così ma ti consiglio la precedente:
void parseUrlSegments(String url, String * paths, int numberOfSlashes) {
Ora a me compila quella funzione, non sò se poi il resto è giusto.