for循环中的段错误?

时间:2016-04-07 02:05:20

标签: c++ segmentation-fault

所以继承我的for循环

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故障之前打印出“成功”

1 个答案:

答案 0 :(得分:0)

当我把它放入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;
}

并使用g++ test.cc -o test -Wall -Wextra进行编译我可以毫无问题地执行test。 (除了凯文所指出的,我看到了失踪的endl。)

有超过20个输入,它是segfaults(已经指出,因为数组只有20个元素)。