Arduino Forum

International => Français => Topic started by: bbel91 on Jun 15, 2018, 01:46 pm

Title: Problème avec les pointeurs et strstr()...
Post by: bbel91 on Jun 15, 2018, 01:46 pm
Bonjour,
Je cherche à isoler une partie de texte dans une un tableau de char.
Ci-dessous, je cherche à récupérer : "123.145.789.123", mais la seconde étape ne marche déjà pas.
Je m'embrouille également entre les pointeurs, les tableaux, etc.
Si quelqu'un veut bien m'expliquer, je suis preneur.
Merci.

Code: [Select]

  char t1[50];
  char t2[10];
  char* t3;

  snprintf(t1, sizeof(t1), "+CDNSGIP: 1,\"www.truc.com\",\"123.145.789.123\"");
  snprintf(t2, sizeof(t2), ",");
  t3 = strstr(t1, t2);
  Serial.print(t3);            // j'obtiens biens : ,"www.truc.com","123.145.789.123"
  t3 = strstr(t3, t2);
  Serial.println(t3);          // j'obtiens toujours : ,"www.truc.com","123.145.789.123"
Title: Re: Problème avec les pointeurs et strstr()...
Post by: lesept on Jun 15, 2018, 02:46 pm
Peux-tu tester :
Code: [Select]

  char t1[50];
  char* t3;

  snprintf(t1, sizeof(t1), "+CDNSGIP: 1,\"www.truc.com\",\"123.145.789.123\"");
  t3 = strtok (t1,"\"");
  while (t3!= NULL)
    {
      Serial.println (t3); // ou Serial.println ("%s",t3);
      t3 = strtok (NULL, " \"");
    }
Title: Re: Problème avec les pointeurs et strstr()...
Post by: biggil on Jun 15, 2018, 03:56 pm
Quote
Code: [Select]
t3 = strstr(t3, t2);
  Serial.println(t3);          // j'obtiens toujours : ,"www.truc.com","123.145.789.123"
C'est tout à fait normal : t3 pointe sur ,"www.truc.com","123.145.789.123"
et tu demandes de rechercher la 1ère virgule. Donc tu n'avances pas.

Il faut sauter 1 caractère en faisant :
Code: [Select]
t3 = t3 + 1; // ou bien t3++;
t3 = strstr(t3, t2);

 
Title: Re: Problème avec les pointeurs et strstr()...
Post by: bbel91 on Jun 15, 2018, 04:02 pm
Merci lessep, biggil,

Le problème venait bien du pointeur à incrémenter...


Bruno.