C 从指针访问结构

C 从指针访问结构,c,pointers,struct,C,Pointers,Struct,您好,我需要有关如何在“assign_guest_at”中为特定座位分配g的帮助,以便我可以检查进一步的条件(问题如下所述) 该功能尝试将“g”分配给位于的座椅 “行”和“列”(由本文件的参数指定) 功能)。如果座位上有默认客人,即客人 姓“?”和名“?”,然后 我们可以将新客人“g”分配到该座位和 方法返回true。否则,该座位将被视为 如果被其他人采用,则该方法不指定 返回guest并返回0(false) 要比较C中的字符串,在名为strcmp的strcmp中有一个函数,它比较两个字符串,如

您好,我需要有关如何在“assign_guest_at”中为特定座位分配g的帮助,以便我可以检查进一步的条件(问题如下所述)

该功能尝试将“g”分配给位于的座椅 “行”和“列”(由本文件的参数指定) 功能)。如果座位上有默认客人,即客人 姓“?”和名“?”,然后 我们可以将新客人“g”分配到该座位和 方法返回true。否则,该座位将被视为 如果被其他人采用,则该方法不指定 返回guest并返回0(false)


要比较C中的字符串,在名为strcmp的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;
    }
}

不知道你说的是什么意思。但是,如果我们理解它是一个字符数组(可能在初始化时指定),那么下面的代码段将实现您的函数:

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;
}

该函数检查[行][col]处的座位是否有默认来宾(正如您在上面定义的那样,姓氏和姓氏后都附加了“?”字符串),如果是这样,则会将座位
*g
复制到其中。

C不支持方法。您的代码段中没有任何方法。很抱歉,它被认为是来自Points。如果您不理解某条评论,请研究它的状态可能会有所帮助。我甚至没有提到指针。只需澄清:代码片段中没有方法。只有一个函数。还有一个提示:
“\0”
作为“strtok”的参数应该做什么?不能像这样比较字符串:
a->seating[row][col]==”?“
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;
}