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
Gast
#2074297
dein va_start hat die "..."-Parameter schon aufgelöst, die kriegst du so nicht mehr ins printf. Deshalb:
1 | |
2 | |
3 | |
4 | |
Die schlucken die vor-geparste va_list.
Danke. Werde das später mal versuchen.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.