Reply To: Tag 14 – Letzte Farbe anzeigen
› Forums › (Deutsch) Adventskalender › Tag 14 – Letzte Farbe anzeigen › Reply To: Tag 14 – Letzte Farbe anzeigen
December 14, 2015 at 19:41
#868
Member
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
.
-
This reply was modified 9 years, 4 months ago by
Raabinator.