uart_printf gibt keine Variablen korrekt aus

Gast #488537
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?
Gast #490217
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.