#include <stdio.h>
#include <stdlib.h>

struct {
          char vorname[20];
          char nachname[30];
          char strasse[30];
          char hausnummer[5];
          char plz[7];
          char ort[30];
          char sternzeichen[30];
          char alter[3];
         }adressen;


void speichern()
{
 FILE *save;

 if((save=fopen("adressen.dat","r+b")) == NULL)
  {
   if((save=fopen("adressen.dat","w+b")) == NULL)
    {
     fprintf(stderr,"Kann \"adressen.dat\" nicht oeffnen!\n");
     exit (0);
    }
  }

/*FILE - Zeiger save auf das Ende der Datei setzten*/
 fseek(save, 0, SEEK_END);

/*Wir schreiben eine Adresse ans Ende von "adressen.dat"*/
 if(fwrite(&adressen, sizeof(adressen), 1, save) != 1)
  {
   fprintf(stderr,"Fehler bei fwrite...!!!\n");
   exit (1);
  }

/*Wir geben unseren FILE - Zeiger wieder frei*/
 fclose(save);
}

void ausgabe()
{
 FILE *output;

 if((output=fopen("adressen.dat","r+b")) == NULL)
  {
   fprintf(stderr,"Konnte \"adressen.dat\" nciht oeffnen\n");
   exit (2);
  }

/*Wir lesen alle Adressen aus "adressen.dat"*/
 while(fread(&adressen, sizeof(adressen), 1, output) ==1)
  {
   printf("Vorname...........: %s",adressen.vorname);
   printf("Nachname..........: %s",adressen.nachname);
   printf("Strasse...........: %s",adressen.strasse);
   printf("Hausnummer........: %s",adressen.hausnummer);
   printf("Postleitzahl......: %s",adressen.plz);
   printf("Ort...............: %s",adressen.ort);
   printf("Sternzeichen......: %s",adressen.sternzeichen);
   printf("Alter.............: %s",adressen.alter);
   printf("\n\n");
  }

 fclose(output);
}

void eingabe()
{

 printf("Vorname...........:");
 fgets(adressen.vorname, sizeof(adressen.vorname), stdin);
 printf("Nachname..........:");
 fgets(adressen.nachname, sizeof(adressen.nachname),stdin);
 printf("Strasse...........:");
 fgets(adressen.strasse, sizeof(adressen.strasse), stdin);
 printf("Hausnummer........:");
 fgets(adressen.hausnummer, sizeof(adressen.hausnummer), stdin);
 printf("Postleitzahl......:");
 fgets(adressen.plz, sizeof(adressen.plz), stdin);
 printf("Ort...............:");
 fgets(adressen.ort, sizeof(adressen.ort), stdin);
 printf("Sternzeichen......:");
 fgets(adressen.sternzeichen, sizeof(adressen.sternzeichen), stdin);
 printf("Alter.............:");
 fgets(adressen.alter, sizeof(adressen.alter), stdin);

 speichern();
}

int main()
{
 char jn;

 do{
      eingabe();
      ausgabe();
      fflush(stdin);
      printf("Weitere Dateien eingeben (j/n): ");
      scanf("%c",&jn);
      fflush(stdin);
     }while(jn != 'n');

 return 0;
}

