#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>

#ifdef __unix__
      #include <unistd.h>
      #include <sys/stat.h>
      #include <sys/types.h>
#elif __MSDOS__
      #include <io.h>
      #include <sys\stat.h>
#endif
#define MAXADRESSEN 10

struct kunde {
              char name[20];
              char vorname[20];
              int kundenummer;
              char ort[30];
              char strasse[30];
              int hausnummer;
              long vorwahl;
              long telefonnr;
             };

struct kunde k[MAXADRESSEN];
static int counter=0;


void neukunde()
{
 int handle;
 if(counter==MAXADRESSEN)
    printf("Kein Speicherplatz mehr frei!!!\n");
 else
  {
   printf("Name...................: ");
   scanf("%s",k[counter].name);
   printf("Vorname................: ");
   scanf("%s",k[counter].vorname);
   k[counter].kundenummer=counter;
   printf("Ort....................: ");
   scanf("%s",k[counter].ort); fflush(stdin);
   printf("Strasse................: ");
   scanf("%s",k[counter].strasse); fflush(stdin);
   printf("Hausnummer.............: ");
   scanf("%d",&k[counter].hausnummer); fflush(stdin);
   printf("Vorwahl................: ");
   scanf("%ld",&k[counter].vorwahl); fflush(stdin);
   printf("Telefonnummer..........: ");
   scanf("%ld",&k[counter].telefonnr);fflush(stdin);
   if((handle=creat("kunden.dat",S_IREAD|S_IWRITE)) == -1)
      printf("Konnte\"kunden.dat\" nicht öffnen\n");
   else if((write(handle,&k,sizeof(k))) == -1)
      printf("Konnte nicht in \"kunden.dat\" schreiben\n");
   else
      counter++;
  }
}


void lese()
{
 int handle;
 int num;

 printf("Bitte geben sie die Kundennummer ein : ");
 scanf("%d",&num);

 if((handle=open("kunden.dat",O_RDONLY)) == -1)
  {
   printf("Kann Kundendatei nicht öffnen");
   exit (0);
  }
 read(handle,&k,sizeof(k));
 printf("\n\n");
 printf("Name..........%s\n",k[num].name);
 printf("Vorname.......%s\n",k[num].vorname);
 printf("Kundennummer..%d\n",k[num].kundenummer);
 printf("Wohnort.......%s\n",k[num].ort);
 printf("Strasse.......%s\n",k[num].strasse);
 printf("Hausnummer....%d\n",k[num].hausnummer);
 printf("Vorwahl.......%ld\n",k[num].vorwahl);
 printf("Telefonnum....%ld\n",k[num].telefonnr);
}


int main()
{
 int wahl;

 do{
      printf("\t1: Neuen Kunden eingeben\n\n");
      printf("\t2: Kunden ausgeben\n\n");
      printf("\t3: Programmende\n\n");
      printf("\tEingabe :> ");
      scanf("%d",&wahl);
      switch(wahl)
       {
        case 1 : neukunde(); break;
        case 2 : lese(); break;
        case 3 : printf("bye\n"); break;
        default: printf("Falsche Eingabe!!!\n"); break;
       }
     }while(wahl != 3);
 return 0;
}
