Problem mit Zeiger auf Struktur



  • #include <stdio.h>
    
    struct datum{
        unsigned char tag;
        unsigned char monat;
        unsigned short jahr;
    };
    
    struct uhrzeit{
        unsigned char stunde;
        unsigned char minute;
        unsigned char sekunde;
    };
    
    struct zeitpunkt{
        struct datum date;
        struct uhrzeit time;
    } moment;
    
    struct zeitpunkt *einlesen(struct zeitpunkt *moment)
    {
        printf("Tag eingeben: ");
        scanf("%d",moment->date.tag);
    
        printf("\nMonat eingeben: ");
        scanf("%d",moment->date.monat);
    
        printf("\nJahr eingeben: ");
        scanf("%d",moment->date.jahr);
    
        printf("\n\nStunde eingeben: ");
        scanf("%d",moment->time.stunde);
    
        printf("\nMinute eingeben: ");
        scanf("%d",moment->time.minute);
    
        printf("\nSekunde eingeben: ");
        scanf("%d",moment->time.sekunde);
    }
    
    int main(void)
    {
        struct zeitpunkt moment;
        einlesen(&moment);
    }
    

    Sobald ich bei "Tag: " irgendeine Zahl eingebe und {Enter} drücke, stürzt das Programm ab.

    Process returned -1073741819 (0xC0000005)
    


  • mach mal & davor, vielleicht gehts dann.
    🙂



  • Du returnst der Struktur "einlesen" ja gar nichts...



  • #include <stdio.h>
    
    struct datum{
        unsigned char tag;
        unsigned char monat;
        unsigned short jahr;
    };
    
    struct uhrzeit{
        unsigned char stunde;
        unsigned char minute;
        unsigned char sekunde;
    };
    
    struct zeitpunkt{
        struct datum date;
        struct uhrzeit time;
    } moment;
    
    struct zeitpunkt *einlesen(struct zeitpunkt *moment)
    {
        printf("Tag eingeben: ");
        scanf("%d", &moment->date.tag);
    
        printf("\nMonat eingeben: ");
        scanf("%d", &moment->date.monat);
    
        printf("\nJahr eingeben: ");
        scanf("%d", &moment->date.jahr);
    
        printf("\n\nStunde eingeben: ");
        scanf("%d", &moment->time.stunde);
    
        printf("\nMinute eingeben: ");
        scanf("%d", &moment->time.minute);
    
        printf("\nSekunde eingeben: ");
        scanf("%d", &moment->time.sekunde);
    }
    
    int main(void)
    {
        struct zeitpunkt moment;
        einlesen(&moment);
    }
    

    scanf nimmt nur Pointer.



  • Danke, läuft


Anmelden zum Antworten