#c #c 11
Вопрос:
надеюсь, у вас сегодня хороший день. Я пытаюсь создать проект, в котором я могу отображать содержимое внешнего файла с помощью меню, которое зацикливается. Я не могу понять, связана ли проблема с моей функцией чтения файла или с моим меню, так как, как только программа отобразит файл данных, она не вернется в меню. Вот мой главный:
int main() { getMenu(); unsigned short menuChoice = 0; cin gt;gt; menuChoice; do { switch (menuChoice) { case DisplayFile: readFile(); break; case AddToFile: addToFile(); case Exit: return 0; default: cout lt;lt; "You have entered an invalid menu choice.n " lt;lt; "Please try again"; getMenu(); } //menuChoice=0; } while (menuChoice != Exit); return 0; }
Вот мой код файла для чтения/отображения
void readFile() { ifstream HomeWorknInfo; HomeWorknInfo.open("dates.txt", ios::in); if (!HomeWorknInfo.is_open()) { exit(EXIT_FAILURE); } while (HomeWorknInfo.is_open()) { string line; while (getline(HomeWorknInfo, line)) cout lt;lt; line lt;lt; "n"; } HomeWorknInfo.close(); }
Также вот мои варианты выбора меню и включает в себя на случай, если они вам понадобятся:
#include lt;iostreamgt; #include lt;vectorgt; #include lt;streamgt; #include lt;cstdlibgt; enum MenuChoice { DisplayFile, AddToFile, Exit };
Комментарии:
1. Это правильно, показанный код «он не будет возвращаться в меню». Почему вы думаете, что это должно быть так? В конце концов, вызов
getMenu()
не является частью какого-либо цикла. Это всего лишь первый вызов функцииmain
, и когда он вернется, ничто в показанном коде никогда не будет «возвращаться» к нему. Чтобы «вернуться» к чему-то, оно должно быть включено в какой-то цикл.2. @SamVarshavchik Привет, Сэм, спасибо за ответ. Даже когда я помещаю выбор меню в свой цикл выполнения, он все равно не вернется в меню после отображения файла. Есть какие-нибудь предложения?
3. Как насчет того, чтобы использовать свой отладчик, чтобы разобраться в этом? Для этого и предназначен отладчик, и если вы не знаете, как его использовать, это хорошая возможность научиться запускать свою программу по одной строке за раз в отладчике, отслеживая все переменные и их значения по мере их изменения и анализируя логику и выполнение вашей программы. У вас должна быть возможность использовать свой отладчик, чтобы самостоятельно находить все простые проблемы в этой и во всех будущих программах, которые вы пишете.