Sprintf

Bonjour,

Je rencontre un souci en utilisant sprintf.

Voici mon code :

 long lat2, lon2;  
Serial.println(lat2);
 Serial.println(lon2);
 sprintf(adresse,"AT+HTTPPARA=\"URL\",\"site.fr/val.php?id=1&lat=%d&long=%d\"",lat2,lon2);
 Serial.print(adresse);
  mySerial.println(adresse);

Et ce que j'obtiens sur mon Serial :

449205
21367
AT+HTTPPARA="URL","site.fr/val.php?id=1&lat=29753&long=7"

Je ne comprend d'où viennent ce 29753 et ce 7...

J'ai dû faire une erreur quelque part mais je la vois vraiment pas.

sprintf(adresse,"AT+HTTPPARA=\"URL\",\"site.fr/val.php?id=1&lat=%d&long=%d\"",lat2,lon2);

449205
21367
AT+HTTPPARA="URL","site.fr/val.php?id=1&lat=29753&long=7"

Je ne comprend d'où viennent ce 29753 et ce 7...

lat2 et lon2 sont définis comme des long. Il faudrait le préciser dans la ligne du sprintf

sprintf(adresse,"AT+HTTPPARA=\"URL\",\"site.fr/val.php?id=1&lat=%ld&long=%ld\"",lat2,lon2); // il faut ajouter l devant le d pour indiquer que c'est un long

Merci beaucoup, c'était ça ! :slight_smile:

Bonjour,

Au passage tu remarqueras qu'une grande partie de ta chaine est statique :wink:

Seule la partie verte change :

sprintf(adresse, "AT+HTTPPARA="URL","site.fr/val.php?id=1&lat=%ld&long=%ld"", lat2, lon2);

Tu peut donc gagner en vitesse et en RAM en faisaint comme ceci :

Serial.print(F("AT+HTTPPARA=\"URL\",\"site.fr/val.php?id=1&lat="));
Serial.print(lat2);
Serial.print(F("&long="));
Serial.print(lon2);
Serial.println(adresse);

Plus besoin de sprintf (qui est super lourd et gourmand en ressource).