Inicjalizacja daty, wypisywanie na ekran

0

Witam,
mam napisać takie zadanie:
Stwórz strukturę reprezentującą datę o nazwie „Data”. Niech zawiera pola: rok,
miesiąc i dzień. Stwórz nowy typ danych na podstawie struktury „Data”. Zaimplementuj funkcje:
– wczytywania daty z klawiatury
– wypisywania daty na ekran
– inicjalizacji zmiennej typu data na 1970-01-01

Napisałem coś takiego:
include <stdio.h>
include <stdlib.h>
include <string.h>

typedef struct
{

int rok;
int miesiac;
int dzien;
} Data;

void WczytajData(Data e)
{

scanf("%d", (&e.rok));
scanf("%d", (&e.miesiac));
scanf("%d",(&e.dzien));

}

void WypiszData(Data f)
{

printf(" Rok to: %d", f.rok);
printf(" Miesiac to:  %d", f.miesiac);
printf(" Dzien to:  %d",f.dzien);

}

void InicjalizujData(Data h)
{

h.rok=1970;
h.miesiac=1;
h.dzien=1;

}

int main(int argc, char *argv[]) {
Data g;

InicjalizujData(g);
WypiszData(g);

return 0;

}

Wyrzuca mi totalne bzdury, zupełnie inne liczby niż te które są wpisane (1.1.1979). Domyślam się że na pewno powinien być inny typ niż int, ale póki co nie myślę o tym jako o dacie, a o zwykłych cyfrach wczytywanych z klawiatury, i nie rozumiem, czemu program nie działa i skąd bierze takie wartości.
Pozdrawiam,

0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>




 typedef struct 
 {
   
 int rok;
 int miesiac;
 int dzien;
 } Data; 

void WczytajData(Data *e)
 {
     
     scanf("%d", (&e->rok));
     scanf("%d", (&e->miesiac));
     scanf("%d",(&e->dzien));
 }

 void WypiszData(Data *f)
 {
     
     printf(" Rok to: %d", f->rok);
     printf(" Miesiac to:  %d", f->miesiac);
     printf(" Dzien to:  %d",f->dzien);
 }

 void InicjalizujData(Data *h)
 {
     
     h->rok=1970;
     h->miesiac=1;
     h->dzien=1;
 }


 int main() {
     Data g;
     
    InicjalizujData(&g);
     WypiszData(&g);
     
     return 0;
 }
0
#include <stdio.h>
 
typedef struct 
  {
   unsigned int rok,miesiac,dzien;
  } Data; 
 
Data WczytajData()
  {
   Data d;
   scanf("%u%u%u",&e.rok,&e.miesiac,&e.dzien);
   return d;
  }
 
void WypiszData(Data f)
  {
   printf("%4u.%02u.%02u\n",f.rok.f.miesiac,f.dzien);
  }
 
Data InicjalizujData()
  {
   Data d={1970,1,1};
   return d;
  }
 
int main()
  {
   Data d=InicjalizujData();
   WypiszData(d);
   printf("Podaj date RRRR MM DD: ");
   WypiszData(WczytajData());
   return 0;
  }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.