Extraire une chaine dans une chaine

Bonjour,

Je cherche comment trouver une chaine dans une chaine ?

En retour de mon serveur web je reçoit la chaine suivante : HPD,0,379:GET /BManu HTTP/1.1

J'aimerais ne récupérer que le /BManu mais je ne trouve pas de fonction me permettant de réaliser cette opération pour l’intégrer dans un While

Merci d'avance pour vos pistes

Salut

Différentes solutions possibles.
parcourir la chaîne jusqu'à trouver '/'.
copier les caractères jusqu'à ' '.
placer un '\0' à la place de l'espace.

strtok() peut être bien aussi.
inspire-toi de CECI.

L'intérêt de strtok() est que tu n'as pas besoin de déclarer un buffer pour la sous-chaîne que tu extrais.
Elle retourne un simple pointeur.
Mais ATTENTION: strtok() modifie la chaîne.

@+

Bonjour,

Utilises strstr

essayez un truc du genre

char headerLine[] = " HPD,0,379:GET /BManu HTTP/1.1";
const char reqGET[] = ":GET ";
const byte reqOffset = sizeof(reqGET) - 1; // on ne veut le +1 du '\0' pour pointer au bon endroit

const size_t maxURLLength = 20;
char URLBuffer[maxURLLength + 1]; // +1 pour le '\0' à la fin de la chaîne

boolean parseURL(const char * message, char * urlBuffer, size_t maxURLCar)
{
  boolean correct = false;
  char * ptrURL = strstr(message, reqGET) ; // http://www.cplusplus.com/reference/cstring/strstr/
  if (ptrURL) {
    char * debutUrl = ptrURL + reqOffset;
    char * endUrlPtr = strstr(debutUrl, " "); // on cherche l'espace à la fin de l'URL
    if (endUrlPtr) {
      byte nbCar = endUrlPtr - debutUrl;
      if (nbCar < maxURLCar) {
        strncpy(urlBuffer, debutUrl, nbCar);
        urlBuffer[maxURLCar] = '\0'; // au cas où strncpy n'a pas mis de terminaison
        correct = true;
      } else Serial.println(F("Erreur, URL trop longue"));
    } else Serial.println(F("Erreur, Header non correct"));
  } else Serial.println(F("Erreur, ce n'est pas une requete GET"));
  return correct;
}

void setup() {
  Serial.begin(115200);
  if (parseURL(headerLine, URLBuffer, maxURLLength)) {
    Serial.print(F("J'ai trouve un l'URL: ["));
    Serial.print( URLBuffer);
    Serial.print(F("]"));
  }
}

void loop(){}

(non testé)