Forum: Mikrocontroller und Digitale Elektronik uart_printf gibt keine Variablen korrekt aus


von Sascha (Gast)


Lesenswert?

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?

von Sascha (Gast)


Lesenswert?

das: void uprintf(u08_t uart, const char * fmt, ...) {
muss natuerlich void uart_printf(u08_t uart, const char * fmt, ...) {

heissen!

von FBI (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.