www.mikrocontroller.net

Forum: Compiler & IDEs String-Ausgabe via UART, kurze Frage zum C Code


Autor: Alexander H. (ill_son)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahoi,

folgendes: ich möchte einen String über die UART ausgeben.
Die Funktion sieht wie folgt aus:

unsigned int uart_puts(char *string) {

  for (string = 0; ;string++) {

    if(*string != 0) uart_putc(*string);
    else break;
  }

  return (0);
}

Kann mir kurz jemand sagen, wo der Fehler sein könnte, momentan stehe 
ich diesbezüglich etwas auf dem Schlauch. Die verwendete uart_putc 
funktioniert einwandfrei.

Danke, Alex

Autor: die ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest string nicht auf 0 setzen:
for (;; string++)

Alles in allem etwas quer, aber sollte passen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander H. wrote:
> Ahoi,
>
> folgendes: ich möchte einen String über die UART ausgeben.
> Die Funktion sieht wie folgt aus:
>
> unsigned int uart_puts(char *string) {
>
>   for (string = 0; ;string++) {

Das wird wohl nichts werden, wenn du hier den Pointer 'string'
auf 0 setzt. Dadurch hast du dir gerade die Adresse die dich
zu den Zeichen des Strings bringt zerstört.

unsigned int uart_puts(char *string)
{
  while( *string )
    uart_putc( *string++ );

  return 0;
}

Autor: die ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:
unsigned int 
uart_puts(char *string) 
{

  for (; *string != '\0'; string++) 
  {
    uart_putc(*string);
  }

  return (0);
}

Autor: Alexander H. (ill_son)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Das mit der Adresse fiel mir nach dem Poat auch auf, hatte es aber 
trotzdem nicht gleich lösen können.
So einfach kann's gehen. Manchmal sieht man den Wald vor Bäumen nicht.

Wieder was gelernt...

Vielen Dank,

Alex

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.