Go Down

Topic: Problème avec les pointeurs et strstr()... (Read 212 times) previous topic - next topic

bbel91

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"

lesept

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, " \"");
    }
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

biggil

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);

 

bbel91

Merci lessep, biggil,

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


Bruno.

Go Up