Prendere una substring da un char array

Ciao Ragazzi...
Ho questo tipo di problema e chiedo a voi se avete una soluzione semplice e veloce.
Sto lavorando con la wifi e con la libreria Wiserver. Un arduino uno con una scheda wifi MRF24WB0MA
Ho il mio sito web che mi permette di inserire dei dati e da una pagina mi restituisce questo URL

/ok_fan?soprasx=55&sopradx=11&dentrosx=13&dentrodx=13&radsx=13&raddx=13&rafsx=13&rafdx=15&Send=Send

Il problema è che me lo restituisce in formatto array char e io vorrei poter estrapolare i valori come delle substring se la varibile fosse di tipo String.
Se lo converto in una variabile String, questa alla fine contiene NULL (anche questo un problema da capire, forse per problema di poca memoria)
Quindi vi chiedo se è possibile e come, poter ricercare ed estrapolare una parte di stringa da un array char.
Spero di essere stato abbastanza chiaro.

Grazie

Il problema è che me lo restituisce in formatto array char e io vorrei poter estrapolare i valori come delle substring se la varibile fosse di tipo String.

se vuoi per comodita’ puoi’ trasformare l’ array char in una variabile di tipo string.
un esempio non molto elegante potrebbe essere questo :

char input_string[]="test";
int i=0;
int len=0;
String mystring="";

len=strlen(input_string);

for(i=0;i<len;i++)
{
    mystring += input_string[i];
};

Se lo converto in una variabile String, questa alla fine contiene NULL (anche questo un problema da capire, forse per problema di poca memoria)

questo non lo ho capito …

Quindi vi chiedo se è possibile e come, poter ricercare ed estrapolare una parte di stringa da un array char.

puoi agire direttamente sull’array char utilizzando le apposite funzione sulle string.
che mi vengano in mente ad occhio potrebbero servirti :

char * strstr ( char * str1, const char * str2 );
char * strtok ( char * str, const char * delimiters );
etc…

Se i token che compongono l'URL hanno lunghezza costante e ti interessano i valori numerici basta che gestisci l'array con i suoi indici. Comunque spiega meglio ciò che vuoi esattamente prendere dall'array.

Grazie intanto per le risposte..
Allora.. mi spiego meglio... La libreria wiserver mi restituisce un url classico per la gestione dei dati inseriti via web con il comando get.
Ad Es. /ok_fan?soprasx=55&sopradx=11&dentrosx=13&dentrodx=13&radsx=13&raddx=13&rafsx=13&rafdx=15&Send=Send
Queste url (ne ho 7/8 simili a quella sopra) non hanno lunghezza fissa ma variano a seconda dei nomi campi e dei dati inseriti.
Io da queste Url devo estrapolare i dati numeri che sono nel mezzo e i nomi dei campi. Es. (soprasx) (55) questo perchè devo valorizzare delle variabili nel codice interno.
Il problema è che la libreria mi da l' URL in un array char e per cui difficile da gestire a differenza di una String.
Provando a fare la conversione in una variabile String, questa alla fine dell' operazione contiene NULL, sinceramente non ho indagato il perchè, ma penso sia a causa di scarsa memoria libera.
Quindi quello che vorrei è poter estrapolare quei dati direttamente dall' array char.

puoi agire direttamente sull'array char utilizzando le apposite funzione sulle string.
che mi vengano in mente ad occhio potrebbero servirti :

char * strstr ( char * str1, const char * str2 );
char * strtok ( char * str, const char * delimiters );
etc..

Ecco appunto... vorrei approfondire queste istruzioni. Io ne ho provato alcune, tipo la indexof() ma nonlavora sugli array char.

Grazie ancora e spero di essere stato più chiaro

Soprasx,sopradx ecc. sono comuni a tutti gli ulr e vengono fuori solo qundo c’è bisogno oppure vengono generati dal server e sono sempre tutti diversi quindi non prevedibili?
Dal sito è possibile modificare le stringhe mettendo dei parametri per formattarle tutte nella stessa maniera?

Controlla la ram occupata dal tuo sketch per verificare se in effetti è proprio la ram che è stretta sennò si può provare a capire cosa c’è che non va nella conversione in stringa (posta il codice che hai usato per la conversione che male non fa).

Potresti usare la "strncpy" per copiarti solo un certo numero di caratteri da un array di char ad un altro ...

char *strncpy(char *dest, const char *src, size_t n);

stando attento alla gestione del terminatore.

Per la sintassi, ad esempio, QUI

Guglielmo