sprintfcannot be used to write data intoStringobjects. More precisely, it is possible to come up with a "hackish" way to write the result directly into aStringobject, but the latter is definitely not designed for such use.
The target buffer should 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);
- The format string you used in your
sprintfwill generate%02outputresult (sinceicontains2at that moment). Why you are expecting09is 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. - A
Stringobject cannot be used as the first parameter offprintf. It is not clear what thatfprintfis doing in your code.
Apparently you are trying to use sprintf to generate another format string at run time (using i as field width), which is later used to output the d variable. In that case that would be something like
char format[16];
snprintf(format, sizeof format, "%%0%dd", i);
fprintf(file, format, d);
That fprintf will indeed output 09.