На первый взгляд, вот несколько советов.Ваш код нуждается во многих других проверках безопасности и небольших исправлениях:
Кажется, что ваша основная функция подписана как sus:
int main(int numberOfInvItems, inventoryItem inv[], ...... .....) { }
действительно должно быть
int main(int argc, char *argv[]) { }
Примечание: еслиэто не ваша функция ACTUAL APPLICATION MAIN, поэтому НЕ вызывайте ее main.
Во-вторых, ваш метод readInventory должен действительно возвращать bool, если он был успешным или нет, и возвращать правильные значения только через аргументы: т.е.:
bool readInventory(inventoryItem inv[], int& numberOfInvItems, int& lastOrderNum)
{
// Could not open
if(f.fail())
return false; // Dont set NumberOfInvItems to READ_ERROR? WHAT DOES THAT EVEN MEAN?
// ...
// Successful
return true;
}
и в вашей основной функции
int main(...)
{
int numberOfInvItems = 0;
int lastOrderNum = 0;
// Ensure it was successful via the return type
if(readInventory(inv, numberOfInvItems,lastOrderNum))
{
// ALL VALUES WEOULD BE VALID HERE
for(int i = 0; i < numberOfInvItems; ++i) {
// ...
}
}
}
В-третьих, я считаю, что следует избегать использования массивов C.Я бы предложил поменять их на std :: vectors или, по крайней мере, на массив std ::, чтобы уменьшить количество возможных ошибок.
Наконец, в вашем цикле for:
for (int m = 0; m < numberOfInvItems; m++) {
//Inventory[m].prodNum = m;
Inventory[m].prodCode = inv[m].prodCode;
Inventory[m].description = inv[m].description;
Inventory[m].price = inv[m].price;
}
Естьвы подтвердили, или вы ИСПОЛЬЗУЛИ оба Inventory [] и inv [] одинакового размераЧто делать, если один размер больше другого - он потерпит крах.Либо итерация к наименьшему из них, либо вообще не повторение.
Вы должны добавить отладку (std :: couts или printf's) после каждой строки, чтобы увидеть, где именно происходит сбой.Отладка Отладка Отладка.Затем вы можете определить, какая строка / функция / выражение вызвало проблему.Если происходит сбой, и отладка вообще не печатается, то, вероятно, это из-за вашей хитрой главной функции.