在C中使用结构-无法访问值
我试图运行一个简单的struct程序,它将用户输入的信息存储在一个结构中,然后打印出来 但是,它没有适当地打印值。我的代码是:在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];
#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)代码>以确保安全。