嗨我需要帮助,如何将g分配给“assign_guest_at”中的特定座位,以便我可以检查它是否有更多条件(问题如下所述)。
该功能尝试将“g”分配给座位 “row”和“col”(由此参数指定 功能)。如果座位有默认的客人,即客人 姓氏“???”然后是第一个名字“???” 我们可以将新客人“g”分配给该座位和 方法返回true。否则,这个座位被认为是 由其他人采取,该方法不分配 客人返回0(假)。
struct guest {
char last_name[30];
char first_name[30];
};
struct auditorium_seating {
struct guest **seating;
};
void guest_init(struct guest *g, char *info)
{
char *token;
token = strtok(info, "/");
strcpy(g->first_name, token);
token = strtok(NULL, "\0");
strcpy(g->last_name, token);
}
int assign_guest_at(int row, int col, struct auditorium_seating *a, struct guest* g)
{
if (a->seating[row][col] == "???")
{
return 1;
}
else
{
return 0;
}
}
答案 0 :(得分:1)
为了比较C中的字符串,在命名 strcmp 中有一个函数,它比较两个字符串,如果它们相等则返回0。
要在结构中使用它,您应该使用默认的访客逻辑对每个字段执行此操作。
我认为以下代码可以满足您的需求:
int assign_guest_at(int row, int col, struct auditorium_seating *a, struct guest* g)
{
if ( strcmp(a->seating[row][col].first_name, "???") == 0 &&
strcmp(a->seating[row][col].last_name, "???") == 0)
{
a->seating[row][col] = *g;
return 1;
}
else
{
return 0;
}
}
答案 1 :(得分:0)
不确定你的意思是什么“???”。但是如果我们知道它是一个字符数组(也许在初始化时分配),那么下面的代码片段实现了你的功能:
int assign_guest_at(int row, int col, struct auditorium_seating *a, struct guest* g)
{
if (!strcmp(a->seating[row][col].last_name, "???")
&& !strcmp(a->seating[row][col].first_name, "???"))
{
memcpy(&a->seating[row][col], g, sizeof (struct guest));
return 1;
}
return 0;
}
该函数检查[row] [col]中的座位是否有默认的guest虚拟机(如上所述,其中“???”字符串附加到last_name& first_name),如果是这种情况,座位*g
被复制到其中。