c - 从指针访问结构

标签 c pointers struct

您好,我需要有关如何将 g 分配给“assign_guest_at”中的特定座位的帮助,以便我可以检查它以了解更多条件(问题如下所述)。

该函数尝试将“g”分配给位于 “行”和“列”(由该参数指定) 功能)。如果座位有默认客人,即客人 姓氏为“???”和名字“???”,然后 我们可以将新客人“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;
        }
    }

最佳答案

为了比较 C 中的字符串,有一个名为 strcmp 的函数,它比较两个字符串,如果相等则返回 0。

要在结构中使用它,您应该使用默认的 guest 逻辑对每个字段执行此操作。

我认为下面的代码可以满足您的要求:

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

关于c - 从指针访问结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46270581/

相关文章:

c - c中结构体运算符的区别

c++ - 如何返回抽象类指针指向的对象?

c++ - vector 插入和分配之间的区别

C# 结构 "this = ...."

c - 意外行为的大小

c - 如何在奇偶排序程序中创建线程并正确排序?

c++ - 将结构指针传递给函数 C++

c# - 如何在 C# 中使用 foreach 编写结构体数组

c++ - 不释放 C 数组中的内存

c - 如何获得UDP校验和?