I’m making an Arduino-powered clock, and in the process, I’m trying to format integers into two-digit formatted strings for the time read-out (e.g. 1 into “01”).
The following gives me “error: expected primary-expression before ‘{‘ token”:
char * formatTimeDigits (int num) {
char strOut[3] = "00";
if (num < 10) {
strOut = {'0', char(num)};
}
else {
strOut = char(num);
}
return strOut;
}
I’m trying to use it as follows:
void serialOutput12() {
printWeekday(weekday); // picks the right word to print for the weekday
Serial.print(", "); // a comma after the weekday
Serial.print(hour12, DEC); // the hour, sent to the screen in decimal format
Serial.print(":"); // a colon between the hour and the minute
Serial.print(formatTimeDigits(minute)); // the minute
Serial.print(":"); // a colon between the minute and the second
Serial.print(formatTimeDigits(second)); // the second
}
Any ideas as to what I’m missing here?
The curly-brace syntax is valid for initial declaration of a variable, but not for assignment after the fact.
Also, you are returning a pointer to an automatic variable, which is no longer validly allocated once returned (and will be smashed by the next call, such as to
print). You need to do something like this: