Jörg schrieb:
> char standby_text_Z1 [21] ;
>
>
>
>
> char zeichen;
> while (zeichen != '\r')
> {
> zeichen = uartGetChar();
> strcat(standby_text_Z1,&zeichen);
> print (standby_text_Z1);
> }
>
>
> so ich bin mal so frei und stelle meine neue Version hier rein .
> Funktioniert auch soweit ganz gut nur wenn ich beispielsweise Hallo vom
> PC schicke bekomme ich auf dem Display Hallo und dann eine einstellige
> Hyroglyphe zu sehen .Kann das sein das es sich dabei um das
> Abschlusszeichen vom Array handelt ?! .
Da gibt es mehrere Probleme.
strcat
das erste Argument bezeichnet den String an den etwas angehängt wird.
Die Betonung liegt auf String.
In einem Array liegt genau dann ein String vor, wenn da 1 '\0' Zeichen
drinn vorkommt, welches das Ende eines Strings markiert.
Ein frisch erzeugtes Array hat undefinierten Inhalt. D.h. du kannst
nicht davon ausgehen, dass du irgendetwas spezifisches da drinn
enthalten ist. Mit Ausnahme von globalen Variablen bei denen
garantiert ist, dass alles auf 0 steht.
Aber funktionslokale Variablen haben irgendeinen Inhalt. Zufällig.
Was gerade vorher dort im Speicher war.
Wenn du also nicht den 'String' in standby_text_Z1 auf einen leeren
String (also einen mit 0 Zeichen) initialisierst, tut es niemand
anderer für dich.
das zweite Argument zu strcat bezeichnet ebenfalls einen String.
Ein einzelnes Zeichen ist aber kein String! Denn ein String benötigt
immer ein '\0' Zeichen als Abschluss um anzuzeigen, wo der Text
aufhört! Ein String, der aus einem Nutzzeichen besteht, hat also im
Speicher mindestens die Länge 2. Ein Byte wird für das Zeichen
gebraucht, das zweite für das '\0' Zeichen, welches erst den String
ausmacht.
Nächstes Problem:
char zeichen;
while (zeichen != '\r')
wie schon gesagt: funktionslokale Variablen haben irgendeinen zufälligen
Inhalt, wenn die Funktion startet. Daher die Frage: Wenn die while
Schleife das erste mal die Variable zeichen überprüft, welchen Inhalt
hat dann 'zeichen'. Und die Antwort darauf lautet: Wir wissen es nicht.
Es kann irgendwas sein. Zb könnte es zufälligerweise auch '\r' sein!
Die Auswirkungen auf deine Schleife kannst du dir hoffentlich ausmalen.