Программа вопросов и ответов вылетает при сборке релиза, отлично работает при отладочной сборке - PullRequest
0 голосов
/ 09 ноября 2019

Я сделал программу вопросов и ответов (консольное приложение) с 3 вопросами, она прекрасно работает в CodeBlocks 17.12 (отладочная сборка), но при сборке выпуска (файл .exe) происходит сбой без ошибок при правильном ответе3-й вопрос. Программа не вылетает при вводе неправильного ответа.

Я пытался отладить WinDbg Preview, но большую часть времени он не работал, и когда это происходило, программа НЕ вылетала при правильном ответе на 3-йвопрос и работал как обычно. Я также пытался удалить цвета SetConsoleAttribute, но это тоже не сработало.

#include <iostream>
#include <cstdlib>
#include <stdlib.h>
#include <windows.h>

using namespace std;

int main()
{
SetConsoleTitle("Bloodrush: The Game");
cout << "Question 3" << endl;
cout << "text" << endl;
cout << "A)" << endl;
cout << "B)" << endl;
cout << "C)" << endl;
cout << "D)" << endl;
cout << "E)" << endl;
string ANSWER3;
cin >> ANSWER3;
if ((ANSWER3 == "E") || (ANSWER3 == "e") || (ANSWER3 == "e)") || (ANSWER3 == "e)"))
 {
   if (system("CLS"))
        system("clear");
    cout << "text" << endl;
    cout << "text" << endl;
    cout << "text \n" << endl;
    cout << "text" << endl;
    return 0;
  }
    else
    {
            SetConsoleTitle("Wrong Answer");
            if (system("CLS")) system("clear");
            cout << "text \n" << endl;
            cout << "Press ENTER to return to the MAIN MENU..." << endl;
            cin.ignore();
            cin.get();
            cout << "no menu" << endl;
    }
}

1 Ответ

0 голосов
/ 10 ноября 2019

Хорошо, я выяснил, в чем проблема.

if ((ANSWER3 == "E") || (ANSWER3 == "e") || (ANSWER3 == "e)") || (ANSWER3 == "e)"))
 {
   if (system("CLS"))
        system("clear");
    cout << "text" << endl;
    cout << "text" << endl;
    cout << "text \n" << endl;
    cout << "text" << endl;
    return 0;
  }

В этой части кода я забыл добавить

cin.ignore(); // These 2 commands make it so that you need to press                
cin.get();    // ENTER to continue running the program

Так что теперь это

if ((ANSWER3 == "E") || (ANSWER3 == "e") || (ANSWER3 == "e)") || (ANSWER3 == "e)"))
 {
   if (system("CLS"))
        system("clear");
    cout << "text" << endl;
    cout << "text" << endl;
    cout << "text \n" << endl;
    cout << "text" << endl;
    cin.ignore();
    cin.get();
    return 0;
  }

Так что теперь программа не просто отключается, она отображает текст выше после ввода ответа. После нажатия ENTER программа отключится.

...