|
![ein Kapitel weiter](../weiter.gif)
Wir wollen ein Programm schreiben mit dem wir den Datentyp mit dem wir arbeiten durch ein vorangestelltes Formatelement Kennzeichnen. So sollten sie zum Beispiel rechnen können...
100+0.99+'A'+100000+1e8L
Dazu benutzen wir einen Wert in der Argumentliste vom Typ char. Wir benutzten folgende Buchstaben :
c und d =int; l=long; f=float oder double; z=long double; e=für Ende der Argumentliste. Der Funktionsaufruf sollte dann folgendermaßen aussehen....
summe('d',100, 'f',0.99, 'c','A', 'l',100000, 'z',1e9L, 'e');
somit benutzten wir für unsere Funktion ähnlich wie bei printf folgenden Syntax...
long double summe(char format, ...);
Hierzu nun der komplette Quellcode....
/*Download:varg4.c*/
#include <stdio.h>
#include <stdarg.h>
#include <ctype.h>
long double summe(char format, ...)
{
va_list vazeiger;
long double wert;
long double ergebnis=0;
va_start(vazeiger,format);
while(format != 'e')
{
switch(tolower(format))
{
case 'c' :
case 'd' : wert=va_arg(vazeiger,int); break;
case 'l' : wert=va_arg(vazeiger,long); break;
case 'f' : wert=va_arg(vazeiger,double); break;
case 'x' : wert=va_arg(vazeiger,long double); break;
}
ergebnis+=wert;
format=va_arg(vazeiger,int);
}
va_end(vazeiger);
return ergebnis;
}
int main()
{
long double gesamt;
gesamt=summe('d', 100, 'l', 10000, 'f', 0.99, 'c', 'a', 'z', 1e9L, 'e');
printf("%ld\n",summe);
return 0;
}
|
![ein Kapitel weiter](../weiter.gif)
© 2001,2002 Jürgen Wolf
|