【发布时间】:2013-11-09 17:48:56
【问题描述】:
这次是关于使用结构体作为参数。在这个任务中,我必须创建一个 FIFS 队列系统。静态人员队列的大小为 10。这意味着队列中只能有 10 人。
我还有静态类型的变量 head、tail 和 nbr_elem。 tail 变量用于将人员添加到特定位置。反之亦然,用于可变头。 nbr_elem 是队列中的人数。我认为您不需要更多信息来帮助我。现在问题来了:
如何在函数中使用结构作为参数?这是我到目前为止所做的:
static person queue[QUEUE_MAX_SIZE];
static int head = 0, tail = 0, nbr_elem = 0;
struct person
{
char first_name[7];
char sur_name[10];
char pers_nbr[10];
};
void person_info(struct person p1){
/*printf("First name: ");*/
scanf("%s", &p1.first_name[7]);
/* printf("Last name: ")*/;
scanf("%s", &p1.sur_name[10]);
/*printf("Id-number: ");*/
scanf("%s", &p1.pers_nbr[10]);
}
到目前为止一切都很好,但现在我必须先使用 strcpy 函数复制 inf,然后将其放入数组 person queue[QUEUE_MAX_SIZE] 我猜(?)
void enqueue( person queue[QUEUE_MAX_SIZE])
{
queue[person_info(p1.first_name[7])];
}
我什至不知道这是否是函数 enqueue 的一个好的开始,所以我需要一些帮助。以及如何在函数中使用静态人员队列[QUEUE_MAX_SIZE]?
我还有一个包含 typedef 人的头文件 queue.h。然后将头文件调用到该文件的 queue.c 中。
【问题讨论】:
-
您正在更新原始结构的副本。您需要从函数中返回修改后的结构(或使用Joachim's answer)。