Проблема с циклическим меню и выводом из внешнего файла

#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. Как насчет того, чтобы использовать свой отладчик, чтобы разобраться в этом? Для этого и предназначен отладчик, и если вы не знаете, как его использовать, это хорошая возможность научиться запускать свою программу по одной строке за раз в отладчике, отслеживая все переменные и их значения по мере их изменения и анализируя логику и выполнение вашей программы. У вас должна быть возможность использовать свой отладчик, чтобы самостоятельно находить все простые проблемы в этой и во всех будущих программах, которые вы пишете.