2017-09-18 180 views
-2

您好,我需要帮助我如何将g分配给“assign_guest_at”中的特定席位,以便我可以检查它是否有更多的条件(问题在下面提到)。从指针访问结构

该函数尝试将“g”分配给座位 “row”和“col”(由此 函数的参数指定)。如果座位具有默认的客人,即,姓氏为“???”的客人 ,和第一个名字“???”,然后 我们可以将新客人“g”分配给该座位,并且 方法返回true。否则,这个座位被认为是 被别人带走,该方法不分配 来宾并返回0(false)。

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

C不支持_methods_。你的代码片段中没有方法。 – Olaf

+0

对不起,它是从指针 – Deathknight

+0

如果你不想取消评论,做一些研究它的状态可能会有所帮助。我甚至没有提到指针。只是不明确:Ther在您的代码段中没有**方法**。只有一个功能。 – Olaf

回答

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; 
    } 
} 
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]有一个默认的来宾(正如你在上面用“???”字符串添加到last_name & first_name中)所定义的那样,如果是这种情况,则将座位*g复制到其中。