Hallo, ich habe mittlerweile eine eigene Funktion geschrieben die sehr gut den Text auf mein Display schreibt. Nun möchte ich der allgemein bekannten Funktion sprintf sagen können, das sie den fertigen String aus ihrer Funktion an meine eigene Funktion schicken soll! Wie kann ich das machen? Hat jemand eine Idee? Gruß Tobias
Tobias Eckhardt wrote: > Hallo, > > ich habe mittlerweile eine eigene Funktion geschrieben die sehr gut den > Text auf mein Display schreibt. > Nun möchte ich der allgemein bekannten Funktion sprintf sagen können, > das sie den fertigen String aus ihrer Funktion an meine eigene Funktion > schicken soll! gar nicht. > > Wie kann ich das machen? Indem du sprintf so benutzt, wie das vorgesehen ist. Du stellst sprintf() einen character Buffer zur Verfügung und sprintf pinselt seine Ausgabe dort hinein. Was du danach mit diesem String-im-Char-Buffer machst ist alleine dein Bier. Zb. kannst du ihn an deine LCD Routine übergeben char Buffer[128]; sprintf( Buffer, "%d", 35 ); glcd( Buffer ); > Hat jemand eine Idee? C-Buch lesen.
Vielleicht suchst du sowas:
1 | #include <stdio.h> |
2 | |
3 | static int uart_putchar(char c, FILE *stream); |
4 | |
5 | static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, |
6 | _FDEV_SETUP_WRITE); |
7 | |
8 | static int |
9 | uart_putchar(char c, FILE *stream) |
10 | {
|
11 | |
12 | if (c == '\n') |
13 | uart_putchar('\r', stream); |
14 | loop_until_bit_is_set(UCSRA, UDRE); |
15 | UDR = c; |
16 | return 0; |
17 | }
|
18 | |
19 | int
|
20 | main(void) |
21 | {
|
22 | init_uart(); |
23 | stdout = &mystdout; |
24 | printf("Hello, world!\n"); |
25 | |
26 | return 0; |
27 | }
|
Das ist ein Beispiel aus der avr-libc-doku. http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html
Edit: Das Beispiel bezieht sich zwar nur auf UART, aber jede andere Ausgabemethode funktioniert ebenso.
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.