Fügen Sie führende Nullen bei integer funktioniert nicht (arduino, c)
Ich möchte konvertieren, zum Beispiel, die Zahl 12 zu 0012. So dass die Zahl ist immer 4 Zeichen lang. Ich habe versucht es mit diesem code:
int number;
int result;
void setup() {
number = 12;
Serial.begin(9600);
result = printf("%03d", number);
}
void loop() {
Serial.println(result);
}
Aber dieser code gibt nur -1 statt 0012. Was ist falsch an diesem code?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ganzen zahlen nicht zu erkennen formatieren wie mit führenden Nullen.
Der einzige Weg, um diese Art von Informationen wäre mit einem string (wie ein
char[]
statt eine ganze Zahl, aber es sieht aus wie Sie sind, einfach schreiben, damit Sie sollte nicht müssen eine variable für die es (wieprintf()
wird, handle, das für Sie).Wenn Sie wirklich brauchen, um zu speichern Ihre Werte, die Sie verwenden können
sprintf()
und erklären Sie Ihreresult
wie unten zu sehen :und dann legen Sie es in Ihrem
setup()
Funktion als solche :Beiden diesen Veränderungen, Ihren aktuellen code könnte so Aussehen :
Betrachten formatieren der Werte, wenn Sie die Ausgabe, sonst können Sie die Verwendung von ganzzahligen Werten durchführen, Arithmetik und Berechnungen mit.
C#
. Die Grundidee bleibt dieselbe.result
müssten ein string im Gegensatz zu einem integer.result
oder legen Sie es gleich auf Ihreprintf()
nennen.malloc(5)
für die abschließenden NULWas ist falsch mit dem code ist, dass Sie zum drucken der return-Wert von 'printf' nennen. Es gibt die Anzahl von Zeichen gedruckt. Da es aussieht wie stdio wurde noch nicht einrichten und doch, es gibt -1 zurück, so wird ein Fehler-flag. Lesen Sie die manual-Seite wieder sorgfältig.
In dieser Zeile:
wollen wir mit 'sprintf' und nicht 'printf'.
'sprintf' braucht, um seine Ausgabe irgendwo. Vielleicht vorab reservieren, so dass Sie sicher, es ist größer als Ihre längste Ausgabe-string plus eins (für die abschließenden nul-Zeichen). Erfolgt die Zuordnung nicht in "setup", aber setzen Sie es außerhalb der routine (da Sie initialisieren Sie es in eine routine, und verwenden Sie es in einem anderen).