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
Du solltest string nicht auf 0 setzen:
1 | for (;; string++) |
Alles in allem etwas quer, aber sollte passen.
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 | }
|
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 | }
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.