Antwort auf: Tag 14 – Letzte Farbe anzeigen
› Foren › Adventskalender › Tag 14 – Letzte Farbe anzeigen › Antwort auf: Tag 14 – Letzte Farbe anzeigen
Dezember 14, 2015 um 19:41 Uhr
#868
Mitglied
Also, bei mir hängen drei Nullen dran (siehe Bild)
- Die erste ist die Null im String, die mit
/0
erzeugt wird (ist unnötig) - Die zweite Null ist die, die der Compiler automatisch an die Zeichenkette anhängt (site ist eins Größer als Zeichen angegeben sind)
- Die dritte Null ist das was zufällig als nächstes im Programmspeicher kommt. Leider gibt die Arduino-IDE kein .map-File aus. Dort könnte man nachsehen, was als nächstes kommt.
Um das komplette Array zu senden (inkl. der automatischen Ende-Null) sollte die Schleife so aussehen:
for (int i = 0; i < sizeof(site); i++)
Da wir aber eine Zeichenkette senden könnten wir auch die Null als Ende verwenden, dann so:
int i = 0;
while (meinArray[i] != '\0')
{
// ... mach was mit dem Zeichen ...
i++;
}
Das wird aber unübersichtlich, da wir das Zeichen erst mit der Funktion pgm_read_byte_near
aus dem Flash lesen müssen.
Im Sketch des Autors wird der String durch das <=
um ein Zeichen überlesen. Richtig wäre <
. Damit wird auch die Ende-Null gesendet, die der Browser aber nicht braucht. Daher ganz richtig mit < sizeof(site)-1
.
-
Diese Antwort wurde geändert vor 8 Jahren, 9 Monaten von
Raabinator.