2016-04-07 2 views
-6

Так Heres мой для петельSeg ошибка в петле?

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"; 
    } 
} 

И это дает мне ошибку сегм после сдачи всех входов в течение цикла. Я знаю, потому что он не печатает «успех» перед ошибкой SEG

+1

Как вы объявляете 'inputServices'? – songyuanyao

+0

только что обновил его извините –

+1

Определите «все входы». Какой номер вы вводите при запуске этой программы. –

ответ

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 элементов).

Смежные вопросы