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


von Alexander H. (ill_son)


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

von die ??? (Gast)


Lesenswert?

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

Alles in allem etwas quer, aber sollte passen.

von Karl H. (kbuchegg)


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.

1
unsigned int uart_puts(char *string)
2
{
3
  while( *string )
4
    uart_putc( *string++ );
5
6
  return 0;
7
}

von die ??? (Gast)


Lesenswert?

Nachtrag:
1
unsigned int 
2
uart_puts(char *string) 
3
{
4
5
  for (; *string != '\0'; string++) 
6
  {
7
    uart_putc(*string);
8
  }
9
10
  return (0);
11
}

von Alexander H. (ill_son)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.