while-Bedingung bei String-ausgabe

OP #4409935
Lesenswert?
• ▲
▼
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
Angehängte Dateien:
Gast #4409943
Lesenswert?
• ▲
▼
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.
Gast #4409957
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.