/*
P R O G R A M M B E S C H R E I B U N G

Demo-Zweck:
Demonstration einer Struktur
*/

#include "stdafx.h"
// wegen strcpy wird #include <string.h> benötigt
#include <string.h>
#include "stdio.h"

struct dtadresse{
	char strasse[20];
	char ort[20];
	int plz;
};

struct dtdatum{
	int tag;
	int monat;
	int jahr;
};


struct person{
	char name[20];
	struct dtadresse adresse;
	struct dtdatum datum;
};


void printDatum(struct dtdatum d);
void changeDatum(struct dtdatum *d, int t, int m, int j);



int main(){
	// Nichtinitialisierte Strukturvariable
	struct dtadresse a1;
	// Initialisierte Strukturvariable
	struct dtadresse a2 = {"rosenweg","stuttgart",74123};
	struct dtdatum d1;
	struct dtdatum d2 = {7, 4, 1947};

	a1.ort[0]='U';
	a1.ort[1]='l';
	a1.ort[2]='m';
	a1.ort[3]='\0';
	a1.plz = 72631;

	d1.tag = 12;
	d1.monat = 31;
	d1.jahr = 2003;

	strcpy(a2.ort, "Urach");

	struct person p1;
	struct person p2 = {"maier",{"seeweg","urach",74324}, {8, 7, 1967}}; 
	p1.adresse.plz = 72669;	
	p1.datum.tag = 24;
	p1.datum.monat = 12;
	p1.datum.jahr = 2000;

	printf(" Name=%s\n Ort=%s\n PLZ=%d\n Strasse=%s\n Jahr=%d\n Monat=%d\n Tag=%d\n\n", 
	        p2.name,  p2.adresse.ort,  p2.adresse.plz,  p2.adresse.strasse, 
            p2.datum.jahr,  p2.datum.monat,  p2.datum.tag);

	printDatum(d1);
	changeDatum(&d1, 24,  12, 2003);
	printDatum(d1);
	return 0;
}


void printDatum(struct dtdatum d){
	printf("Tag=%d\n",d.tag);
	printf("Monat=%d\n",d.monat);
	printf("Jahr=%d\n",d.jahr);
}


void changeDatum(struct dtdatum *d, int t, int m, int j){
	(*d).tag = t;
	(*d).monat = m;
	(*d).jahr = j;
}


