ein Kapitel zurück                                           ein Kapitel weiter

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 zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf