环路的分段故障

Seg fault in for loop?

本文关键字:故障 分段 环路      更新时间:2023-10-16

下面是我的循环

string inputName;
int inputNumServices;
string inputServices[20];
do
{
  cin >> inputName;
  if(inputName != "$")
  {
    cin >> inputNumServices;
    for(int i = 0; i < inputNumServices; i++)
    {
      cin >> inputServices[i];
    }
    cout << "success";
  }
}

在将所有输入输入到for循环后,它给了我一个seg错误。我知道,因为它不会在seg故障之前打印出"成功"

当我将其放入test.cc

#include <iostream>
using namespace std;
int main() {
  string inputName;
  int inputNumServices;
  string inputServices[20];
  // I removed the "do" here, as commented by Nicky C
  {
    cin >> inputName;
    if(inputName != "$")
    {
      cin >> inputNumServices;
      for(int i = 0; i < inputNumServices; i++)
      {
        cin >> inputServices[i];
      }
      cout << "success";
    }
  }
  return 0;
}

并且用CCD_ 2编译,我可以毫无问题地执行CCD_。(除了我看到Kevin指出的丢失的endl。)

对于超过20个输入,它会分段故障(正如已经指出的,因为数组只有20个元素)。