【发布时间】:2018-03-14 16:57:24
【问题描述】:
声明的结构:
typedef struct{
char fname[25];
char mname[3];
char lname[25];
}Name;
typedef struct{
char month[25];
int day,year;
}Date;
typedef struct{
Name gname;
char addr[50];
char cnum[11];
}Guardian;
typedef struct{
Name sname;
Date sbday;
Guardian sguard;
char gender[6];
char addr[50];
char cnum[11];
char course[10];
int year;
}Student;
声明的函数:
void input(Name name,Date date, Guardian guard, Student stud);
void display(Name name,Date date, Guardian guard, Student stud);
当调用输入函数时,它可以让我添加被询问的字符串。然后,调用显示函数。它不会显示输入的信息。
调用函数:
input(name, date, guard, stud);
display(name, date, guard, stud);
显示功能:
void display(Name name, Date date, Guardian guard, Student stud)
{
printf(" -=Student Information=- \n");
printf("Name: %s %s. %s\n",stud.sname.fname,stud.sname.mname,stud.sname.lname);
printf("Birtday: %s %d, %d\n",stud.sbday.month,stud.sbday.day,stud.sbday.year);
printf("Gender: %s\n",stud.gender);
printf("Contact Number: \n%s",stud.cnum);
printf("Course & Year: %s-%d \n",stud.course,stud.year);
printf(" -=Student Guardian Information=- \n");
printf("Name: %s %s. %s\n",guard.gname.fname,guard.gname.mname,guard.gname.lname);
printf("Address: %s\n",guard.addr);
printf("Contact Number: %s\n",guard.cnum);
}
输入函数:
void input(Name name,Date date, Guardian guard, Student stud)
{
printf("Student Information \n");
printf("First Name: ");
gets(stud.sname.fname);
//...
}
这只会显示一组信息。它不会按说添加新记录。只是一个简单的练习。
【问题讨论】:
-
您将希望使用
char*并动态分配而不是固定长度的字符字段。其中一些缓冲区非常短。 -
您还按值而不是作为指针传递参数,这非常混乱和浪费。
-
问题是 C 使用按值传递,因此您只需修改原始结构的副本,而不是结构本身。传递地址。
-
永远不要使用
gets。这是一个危险的函数,已从 C 规范中删除。请改用fgets之类的替代方法。 -
btw..添加..这将只显示一组信息..它不会按说添加新记录..只是一个简单的练习