Arduino-String Formatierung Der Ausgabe
Mache ich eine Arduino-powered Uhr, und in den Prozess, ich bin versucht zu format Ganzzahlen in zwei-Ziffer-formatierte Zeichenfolgen für die Zeit Auslesen (z.B. 1 in "01").
Folgende gibt mir "Fehler: 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;
}
Ich versuche, es zu benutzen, wie folgt:
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
}
Alle Ideen, was fehlt mir hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den geschweifte-Klammer-syntax ist gültig für die erste Deklaration einer variable, nicht aber für die Zuordnung nach der Tat.
Auch, Sie sind der Rückgabe einen Zeiger auf eine automatische variable, die ist nicht mehr gültig zugewiesenen einmal zurückgekommen (und die wird zerstört durch den nächsten Anruf, wie zu
print
). Müssen Sie etwas tun, wie dieses:In C, kann man nicht direkt ein array Inhalt mit der
=
Zuweisungsoperator (Sie können initialisieren ein array, aber das ist eine andere Sache, obwohl es ähnlich sieht).Zusätzlich:
char(value)
- Funktion/- operator tut, was Sie wollen; undstrOut
array, haben Sie zu machen, haben static storage duration.Den einfachen Weg, das zu tun, was Sie wollen, ist
sprintf
:sprintf
ist Teil der Arduino-Bibliothek -- libs sind Brutal subsetted passen in einen 14kb maximale text-segment size.Ein paar Dinge:
strOut = {'0', (char)num};
Für das erste problem, zuweisen von array-Elementen:
Für das 2. problem, die Lösung ist etwas komplizierter. Das beste würde sein, übergeben Sie einen Ziel-string, um die
FormatTimeDigits()
- Funktion und lassen Sie die Anrufer kümmern.Noch ein weiterer Punkt, auf den 1. Element: Sie haben vielleicht schon etwas ähnliches in einem Initialisierung. Das ist anders, als Aufgabe, und es ermöglicht eine ähnlich aussehende Konstrukt als Zuweisung.
strcpy(strOut, "00");
oderstrcat(strOut, "00");
odersprintf
...