#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <time.h>


const char error1[] = "Wert ist größer als 100\n";
const char error2[] = "Wert ist größer als 200\n";
const char error3[] = "Wert ist negativ (<0)!!\n";
const char noerror[]= "Alles OK\n";

static void fehler(int kennung, const char *format, ...)
{
 FILE *logdatei;
 struct tm *zeit;
 time_t jetzt;
 char zeitdaten[30];
 va_list vargzeiger;
 va_start(vargzeiger,format);


 if((logdatei=fopen("fehler.log","a+")) == NULL)
    fprintf(stderr,"Fehler beim öffen von \"fehler.log\" !!\n");

 time(&jetzt);
 zeit=localtime(&jetzt);
 sprintf(zeitdaten,"%02d.%02d.%04d %02d:%02d ",
   (*zeit).tm_mday,(*zeit).tm_mon,(*zeit).tm_year+1900,
   (*zeit).tm_hour,(*zeit).tm_min);


 switch(kennung)
  {
   case 0 : printf("\nAchtung : ");
            vfprintf(logdatei,zeitdaten,vargzeiger);
            vfprintf(logdatei,format,vargzeiger);
            vprintf(format,vargzeiger);
            break;
   case 1 : printf("\nFehler : ");
            vfprintf(logdatei,zeitdaten,vargzeiger);
            vfprintf(logdatei,format,vargzeiger);
            vprintf(format,vargzeiger);
            break;
   case 2 : printf("\nProgrammabbruch : ");
            vfprintf(logdatei,zeitdaten,vargzeiger);
            vfprintf(logdatei,format,vargzeiger);
            vprintf(format,vargzeiger);
            exit(1);
            break;
   case 3 : vprintf(format,vargzeiger);
            break;
  default : printf("\nFalscher Funktionsaufruf\n");
            break;
   }
 va_end(vargzeiger);
 fclose(logdatei);
}