Skip to main content
2 of 6
added 152 characters in body
  1. sprintf cannot be used to write data into String objects. More precisely, it is possible to come up with a "hackish" way to write the result directly into a String object, but it is definitely not designed for such use.

The target buffer must be an array of char, not a String. Which is what the compiler is telling you.

 char buffer[64]; sprintf(buffer, "%%0%d", i); 

or better

 char buffer[64]; snprintf(buffer, sizeof buffer, "%%0%d", i); 
  1. The format string you used in your sprintf will generate %02 output (since i contains 2 at that moment). Why you are expecting 09 is not clear. Why are you expecting the % character to disappear is not clear either, considering that the format string seems to be deliberately designed to include it.
  2. A String object cannot be used as the first parameter of fprintf. It is not clear what that fprintf is doing in your code.