Funzione indexOf per array di char

Ciao a tutti,

anche se la domanda può sembrare stupida vorrei chiedere quale è il metodo migliore per ricavare la posizione di una stringa in un array di char.
Il mio programma utilizza un array di char provenienti dalla ethernet. I dati sono contenuti all'interno dell'array nella forma

"chiave1=valore1 chiave2=valore2 ..."

le chiavi non sono sempre presenti nel pacchetto, quindi non posso fare assunzioni su quale viene prima e quale viene dopo.Quindi vorrei ricavare la posizione di chiave1, chiave2, e così via.
Ho visto che la funzone strcmp restituisce il puntatore all'array di char trovato e mi chiedevo se è corretto fare la differenza dei puntatori oppure se è una cavolata.
Sono quindi costretto ad implementare la mia funzione di ricerca? oppure potete darmi una soluzione se possibile già implementata?

Grazie per il vostro aiuto
Enzo

Non sono sicuro di aver capito quel che vuoi fare, ma forse la funzione strstr() fa al caso tuo.

char *strstr(const char *haystack, const char *needle)

strstr() (che è la funzione che volevo indicare nel post precedente al posto di strcmp) restituisce un puntatore alla prima occorrenza e non l'intero contente la posizione del primo carattere dell'occorrenza.
Potrei fare la differenza dei due puntatori?

Certo! Ma verifica prima che quanto ritorna sia != NULL.

veramente dovresti sommare al puntatore la lunghezza della chiave, ad esempio mettiamo che vuoi salvare i valori in un vettore:

int valori [10];
char* dato = "chiave0=1 ....";

byte sz = strlen("chiave");
char* k = dato;
while ( (k = strstr(k,"chiave")) )
{
    k += sz;
    valori[ *k - '0' ] = parsevalue(k);
}

o comunque qualcosa di simile