Michael wrote:
> Hallo Karl,
>
> danke für deinen beitrag. Ich hab die clear_buffer funktion nochmal
> geändert. Jetzt sieht es bei mir so aus:
>
> for( i = 0; i <= 5; i++ )
Gewöhn dir das <= in einer for Schleife gleich wieder ab.
Das ist ein ständiger Quell für Fehler.
#define MAX 50
char Tmp[MAX]
...
for( i = 0; i < MAX; i++ )
mach was mit Tmp[i];
das sollte dein Ich-bearbeite-ein-Array-Muster sein.
In C wird bei 0 zu zählen angefangen. Das hat ein paar
Konsequenzen. Gewöhn dich besser daran!
>
> Sie haben geschrieben, dass mein code noch viele andere fehler enthält.
> Da ich vor kürzem angefangen habe µC zu programmieren, sehe ich viele
> fehler nicht.
Na. zb. das hier
unsigned char wort[5] = "lampe";
Das ist zwar im eigentlichen Sinn kein Fehler, aber ich bin mir ziemlich
sicher, das du was anderes wolltest.
Der String "lampe". Aus wievielen Zeichen besteht er? Aus 5! Falsch,
du hast das obligatorische, abschliessende '\0' vergessen. "lampe"
besteht zunächst mal aus 6 Zeichen.
unsigned char wort[6] = "lampe";
Aber: du musst nicht selbst abzählen! Lass doch den Compiler die
Dinge erledigen, die er besser kann. Zb. Character in einem
String abzählen:
unsigned char wort[] = "lampe";
Jetzt zählt der Compiler für dich. Und der Compiler verzählt sich
nicht.
Warum benutzt eigentlich die Funktion uart_put() nicht die Funktion
uart_putchar() um einzelne Zeichen auszugeben, sondern erfindet
das Rad wieder neu?
PS: mit 'ziemlich viele' hab ich schamlos übertrieben.