Hallo, meine uart_printf-Funktion sieht so aus: void uprintf(u08_t uart, const char * fmt, ...) { char buffer[200]; va_list ap; va_start(ap, fmt); sprintf(buffer, fmt, ap); va_end(ap); uart_puts(uart, buffer); } Wenn ich diese allerdings testweise mit z.B. int testvar = 10; uart_printf(UART0, "Hello world! Testvar: %d", testvar); aufrufe, dann wird zwar der Text einwandfrei ausgegeben, aber ich kann keine Zahlen korrekt ausgeben. Statt der 10 wird dann - 15872 ausgegeben. Ich dachte erst, das liegt an meiner Funktion, aber mit char buffer[200]; int testvar = 10; sprintf(buffer, "Hello world! Testvar: %d", testvar); uart_puts(UART0, buffer); Gibts die selben Probleme. Woran mag liegen? Was mache ich falsch?
das: void uprintf(u08_t uart, const char * fmt, ...) { muss natuerlich void uart_printf(u08_t uart, const char * fmt, ...) { heissen!
Hi, Dein zweites Bsp. sieht eigentlich OK aus (vorausgesetzt 'uart_puts' funktioniert korrekt). Deine Funktion 'uart_printf' kann aber so eigentlich nicht gehen. Du mußt dort vsprintf anstatt sprintf verwenden.
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.