匹配并搜索结构并标记真或假C.

时间:2018-01-15 16:03:01

标签: c search struct match

我正在构建一个包含2个服务器和1个客户端的系统进行预订。 我找到了一个障碍,现在我将解释:
- 服务员A
- 服务员B
客户

一旦客户从菜单中选择他想要预订的内容以及何时, 服务器B必须在结构中查找日期并检查它是否可用,如果是发送确定,如果它没有发送否作为答案。
要做到这一点,我想到了以下方式,但它不起作用:

bool search(int bet2,  bool flag)
    {
     int i=0;

      for(i=0; i < 11; i++){
        if(strcmp(content[i].date, content[bet2].date) == 0)
        {
           if (content[i].mark == true)
           {
               printf("Date Busy");
               return false;
           } else {
               content[i].mark = true;  
               printf("Date booked day: %s",content[i].date);   
               return true;
            }}
      }
    }

在原型中我声明:

bool search (int bet2, bool flag);

在主要内容我声明如此:

search (bet2, flag);

结构是这样的:

typedef struct choice {
    char name [40];
    char date [40];
    bool mark;
} Choice;

Choice content [10];

现在我有疑问,但是类型bool存在于C?

无论如何,我错在哪里?

抱歉,但今天早上我写了一行代码并且我被困在这里,可能我没有看到它。

此代码返回日期是好的,哪里错了?

1 个答案:

答案 0 :(得分:0)

content [i] .mark = true

将是

content [i] .mark == true

为避免此类问题,您可以使用此类比较

true == content [i] .mark

在这种情况下,即使您忘记了==并使用=,编译器也会抱怨。

是的,更好的是使用简单易读

  if( content [i] .mark )

此外,C中没有名为Else的关键字。它将是else

删除您编写}的代码中的额外}}。范围发生了变化,这是错误的。

另外为什么在这里使用return flag = false它没用。只需return falsereturn true即可。由于flag的更改值不会在任何地方使用。