Antwort auf: Tag 14 – Letzte Farbe anzeigen

Foren Adventskalender Tag 14 – Letzte Farbe anzeigen Antwort auf: Tag 14 – Letzte Farbe anzeigen

#868
Raabinator
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, 10 Monaten von Raabinator.
Attachments: