У меня есть цикл for, который циклически проходит через список массивов дней и сохраняет int в переменной num, когда я переключаюсь через первые 7 дней, моя программа вылетает, я хочу, чтобы она перезапустилась на 1-й день и перейти к обезьяне «1» ... но после первого цикла он сработает.for loop crashing ... segFault C++
Что я делаю неправильно?
C++
//*********************************************************************************************
// function prototype
//*********************************************************************************************
void collectFood(string days[]);
int main(){
//array to hold week days
string days[7] = {"Mon", "Tue", "Wen", "Thur", "Fri", "Sat", "Sun"};
collectFood(days);
}
//*********************************************************************************************
// function to collect foods amounts
//*********************************************************************************************
void collectFood(string days[]){
int num = 0;
// for loop for each monkey
for (int monkey=0; monkey < 3; monkey++){
// for loop to take 7 days worth of food per monkey
for (int day=0; day < sizeof(days); day++){
cout << "Enter the pounds of food eaten by monkey " << monkey
<< " on " << days[day] << ": ";
cin >> num ;
}
}
}
'sizeof (days);' Я достаточно уверен, что это не значит, что вы думаете. На 64-битной платформе, которая будет ** 8 **; не 7 (а на 32-битной платформе это будет всего 4). Вы используете размер * указателя *, а не величину вашего массива. – WhozCraig
Просто опустите '7' в объявлении дней, позже вместо' sizeof (days) 'use' days-> length() '. –