Hallo,
ich versuche gerade eine Art der Stringsübergabe nachzuvollziehen, komme
jedoch nicht klar damit und verstehe nicht den Ausdruck.
und zwar:
_______
unsigned char str[31]="Alle Schalter in Nullposition!"
...
unsigned char i=0;
while(str[i]) putchar(str[i++]);
__________
putchar ist einfach Funktion UDR1=byte_to_send
aber, wie versteht man diesen while Ausdruck while(str[i])? i wird nicht
einmal inkrementiert. Hat das was mit String - Determination /0 zu tun?
Ich würde das übrigens so implementieren:
int i=0;
while(i<31)
{
putchar(str[i])
i++;
}
das komplette Code ist im Anhang.
Bitte um Ihre Hilfe
Gast
#4409937
Alex S. schrieb: > putchar(str[i++]); da steht doch i++
Alex S. schrieb: > Hat das was mit String - Determination /0 zu tun? Genau so ist es. Deine Variante wird zum Genickschuss, wenn du später mal die Stringlänge änderst und nicht aufpasst.
Gast
#4409943
Alex S. schrieb: > unsigned char i=0; > > while(str[i]) putchar(str[i++]); Klar wird hier inkrementiert, dafür steht das "i++". Die while-Schleife läuft so lange bis str[i] ein '\0' enthält. Alex S. schrieb: > int i=0; > while(i<31) > {putchar(str[i] > i++; > ) Die Implementierung ist in dem Fall nicht so gut, stell dir vor der String ändert seine Länge. Mit der while(str[i]) Lösung kannst du flexibel reagieren und ist eigentlich die typische Lösung bei so einem Problem. Es muss halt nur sicher gestellt werden, dass der String mit '\0' terminiert wird.
ok, habs verstanden)) vielen Dank für die Erklärung!
Gast
#4409957
Noch etwas anderes: Für Zeichen nimmt man den Datentyp char. Ob das signed oder unsigned ist, ist eine Einstellung vom Compiler. Zum rechnen nimmt man explizit unsigned char bzw. signed char. Für dein i ist unsigned char ok, Für str ist char besser.
DirkB schrieb: > Noch etwas anderes: > > Für Zeichen nimmt man den Datentyp char. > Ob das signed oder unsigned ist, ist eine Einstellung vom Compiler. > > Zum rechnen nimmt man explizit unsigned char bzw. signed char. > > Für dein i ist unsigned char ok, > Für str ist char besser. hallo Dirk vielen Dank für die Information!
