[BraLUG] C-Frage: Funktion/Prozedur mit variabler Parameteranzahl
Markus Dahms
mad at automagically.de
Do Jan 17 17:52:03 CET 2008
Hallo Uwe,
> ich habe mal wieder eine C-Frage:
> Ich möchte z.B. gern diese 3 Zeilen:
>
> char s[40];
> sprintf(s, "%d %d\n\r", var1, var2);
> uart_puts(s);
>
> in einer Prozedur zusammenfassen, bei der der Format-String und die
> formatiert auszugebenden Variablen als Parameter zu übergeben sind. Wie
> man sieht (sprintf) ist die Anzahl der Parameter nach dem Formatstring
> variabel. Wie macht man das?
mit "variable argument lists". Folgender Schnipsel geht durch den avr-gcc
durch -- ist aber nicht laufzeit-getestet ;).
8<-------------------------------------------------------------------
#include <stdio.h>
void sputf(const char *format, ...)
{
char s[40];
va_list va;
va_start(va, format);
vsprintf(s, format, va);
va_end(va);
uart_put(s);
}
8<-------------------------------------------------------------------
Markus
--
C++ is a horrible language. It's made more horrible by the fact that a lot of
substandard programmers use it, to the point where it's much much easier to
generate total and utter crap with it. Quite frankly, even if the choice of C
were to do *nothing* but keep the C++ programmers out, that in itself would be
a huge reason to use C. -- Linus Torvalds
Mehr Informationen über die Mailingliste Bralug