www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie aus sprintf(a,b,..) -> WriteLine(b,.) machen`?


Autor: Philipp F. (philippfister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Liebe Gemeinde,
ich habe folgendes Problem. Ich möchte die Funktion sprintf nutzen. 
Allerdings will ich nicht jedesmal das Ziel mit übergeben. Also habe ich 
folgendes geschrieben. (kompliert wird mit Softune Workbench für einen 
Fujitsu µC.)

char TxBuffer[32];

void WriteLine(char *StrPointer, ...)
{
 va_list argptr;
 va_start(argptr, *StrPointer);
 sprintf(&TxBuffer[0], StrPointer, argptr);
 va_end (argptr);
 Puts1(&TxBuffer);
}

Aufruf:

WriteLine("Variablen Wert %d", ucZahl);

Doch egal welchen Wert Zahl hat kommt immer der gleiche (falsche) Wert 
auf der Uart raus.
Ändere ich den Aufruf auf:

sprintf(&TxBuffer[0], "Variablen Wert %d", ucZahl);
Puts1(&TxBuffer);

Funktioniert es. Was mache ich falsch?
Könnt ihr mir bitte helfen?

Danke

Autor: 6to4 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dein va_start hat die "..."-Parameter schon aufgelöst, die kriegst du so 
nicht mehr ins printf.


Deshalb:
       int vprintf(const char *format, va_list ap);
       int vfprintf(FILE *stream, const char *format, va_list ap);
       int vsprintf(char *str, const char *format, va_list ap);
       int vsnprintf(char *str, size_t size, const char *format, va_list ap);


Die schlucken die vor-geparste va_list.

Autor: Philipp F. (philippfister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke. Werde das später mal versuchen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.