在C中使用结构-无法访问值

在C中使用结构-无法访问值,c,data-structures,C,Data Structures,我试图运行一个简单的struct程序,它将用户输入的信息存储在一个结构中,然后打印出来 但是,它没有适当地打印值。我的代码是: #include <stdio.h> #include <stdlib.h> struct joining { char dd[2]; char mm[2]; char yyyy[4]; }; struct employee { struct joining j; char name[50];

我试图运行一个简单的struct程序,它将用户输入的信息存储在一个结构中,然后打印出来

但是,它没有适当地打印值。我的代码是:

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

struct joining
{
    char dd[2];
    char mm[2];
    char yyyy[4];
};

struct employee
{
    struct joining j;
    char name[50];
    char address[100];
    int id;
};

int main (void)
{
        struct employee e;

        printf ("Enter name :-");
        scanf ("%s",e.name);

        printf ("\n Enter address : ");
        scanf ("%s",e.address);

        printf ("\n Enter id : ");
        scanf ("%d",&e.id);

        printf ("\n  Enter date of joining in dd-mm-yyyy format : ");
        scanf ("%s %s %s",e.j.dd, e.j.mm, e.j.yyyy);

        printf (" Employee id is %d",e.id);   
        printf ("\n Employee name is %s ", e.name);    
        printf ("\n Employee address is %s ",e.address);
        printf ("\n Date of joining is %s %s %s ",e.j.dd,e.j.mm,e.j.yyyy);

    return 0;
}

字符数组
dd
mm
yyyy
中没有为
\0
分配空间。你需要改变你的结构,以

struct joining
{
    char dd[3];
    char mm[3];
    char yyyy[5];
};  

否则它将调用未定义的行为

在字符数组
dd
mm
yyyy
中没有为
\0
分配空间。你需要改变你的结构,以

struct joining
{
    char dd[3];
    char mm[3];
    char yyyy[5];
};  

否则它将调用未定义的行为。。知道了。我的错!!谢谢:)是的。。知道了。我的错!!谢谢:)我会使用
scanf(“%2s-%2s-%4s”,e.j.dd,e.j.mm,e.j.yyyy)scanf(“%2s-%2s-%4s”,e.j.dd,e.j.mm,e.j.yyyy)以确保安全。