C++ 程序未进入故障诊断码状态。涉及结构 BBQ findBBQ(字符串日期) { 对于(int i=0;i

C++ 程序未进入故障诊断码状态。涉及结构 BBQ findBBQ(字符串日期) { 对于(int i=0;i,c++,visual-studio,if-statement,visual-c++,struct,C++,Visual Studio,If Statement,Visual C++,Struct,看起来您并没有真正查看日期数组中的第一个位置。您可能需要更像这样的位置 BBQ findBBQ(string date) { for (int i = 0; i < 3; i++) { for (int j = 0; j < SIZE; j++) { if (pits[i][j].cal_date == date) { cout

看起来您并没有真正查看日期数组中的第一个位置。您可能需要更像这样的位置

BBQ findBBQ(string date)
{
      for (int i = 0; i < 3; i++)
      {
          for (int j = 0; j < SIZE; j++)
          {
              if (pits[i][j].cal_date == date)
              {
                  cout << "Avail" << endl;
                  return pits[i][j];
              }
          }
      }

      cout << "Unavail" << endl;
      return <<<something that represents not found>>>;
 }
BBQ*findBBQ(字符串日期)
{
对于(int i=0;i<3;i++)
{
对于(int j=0;jcout问题在于您的函数:您从是否查找返回,所以您的逻辑在else语句中不正确。您没有跟踪列表的每个元素。最快的解决方案是:

BBQ* findBBQ(string date)
{
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < SIZE; j++)
        {
            if (pits[i][j].cal_date == date)
            {
                cout << "Avail" << endl;
                return &pits[i][j];
            }
        }
    }

    cout << "Unavail" << endl;
    return NULL;
}
BBQ findBBQ(字符串日期)
{
对于(int i=0;i<3;i++)
{
对于(int j=0;j如果您只想在第一次迭代时返回,那么循环有什么意义呢?例如,您不想在
else
子句中返回。使用所有警告和调试信息(
g++-Wall-Wextra-g
)编译,然后使用调试器(
gdb
BBQ findBBQ(string date)
{
      for (int i = 0; i < 3; i++)
      {
          for (int j = 0; j < SIZE; j++)
          {
              if (pits[i][j].cal_date == date)
              {
                  cout << "Avail" << endl;
                  return pits[i][j];
              }
          }
      }

      cout << "Unavail" << endl;
      return <<<something that represents not found>>>;
 }
BBQ* findBBQ(string date)
{
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < SIZE; j++)
        {
            if (pits[i][j].cal_date == date)
            {
                cout << "Avail" << endl;
                return &pits[i][j];
            }
        }
    }

    cout << "Unavail" << endl;
    return NULL;
}
BBQ findBBQ(string date)
    {
          for (int i = 0; i < 3; i++)
          {
              for (int j = 0; j < SIZE; j++)
              {
                  if (pits[i][j].cal_date == date)
                  {
                      cout << "Avail" << endl;
                      return pits[i][j];
                  }
                  else
                  {
                      cout << "Unavail" << endl;
                     // return pits[i][j];
                  }
              }
          }
     }
void findBBQ(string date)
{
      for (int i = 0; i < 3; i++)
      {
          for (int j = 0; j < SIZE; j++)
          {
              if (pits[i][j].cal_date == date)
              {
                  cout << "Avail" << endl;
                  return;
              }
          }
      }
      cout << "Unavail" << endl;
 }