Я пишу библиотечную программу, которая отображает меню опций, позволяющее пользователю добавлять новые книги в библиотеку, но в моем заявлении добавления он принимает заголовок, а затем попадает в бесконечный цикл , Я написал класс книги, который в основном использует указатели для назначения вещей, если мне нужно опубликовать их. Но когда вы запускаете программу, она компилируется, отображает меню, и когда вы выбираете добавить книгу, она принимает название, но как только вы нажмете enter, он начнет бесконечный цикл.do loop statement вызывает бесконечный цикл
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
int main()
{
int bookCounter = 0;
Book library[25];
int menuOption = 0;
char tempt[50] = "\0";
char tempauth[50] = "\0";
char search[50] = "\0";
unsigned int tempp = 0;
do
{
menuOption = 0;
cout << endl << "1. Show the Library" << endl;
cout << "2. Add a Book" << endl;
cout << "3. Search the Library by Title" << endl;
cout << "4. Exit Library" << endl;
cout << "Select a menu option (e.g. 1, 2, etc.): ";
cin >> menuOption;
if(menuOption == 1)
{
for(int i = 0; i < bookCounter; i++)
{
library[i].displayBook();
}
}
else if(menuOption == 2)
{
cout << "Enter the Title: ";
cin >> tempt[50];
cout << endl << "Enter the Author's name: " ;
cin >> tempauth[50];
cout << endl << "How many pages does the book have? (just enter a number, e.g. 675, 300): ";
cin >> tempp;
library[bookCounter].setAuthor(tempauth);
library[bookCounter].setTitle(tempt);
library[bookCounter].setPages(tempp);
bookCounter++;
menuOption = 0;
}
else if(menuOption == 3)
{
cout << "Enter a title you would like search for (will return partial matches): ";
cin >> search[50];
for (int i = 0; i < bookCounter; i++)
{
int temp = strcmp(search, library[i].getTitle());
if (temp == 1)
{
library[i].displayBook();
}
}
}
}while(menuOption != 4);
system("pause");
return 0;
}
Обратите внимание, что 'cin >> search [50];' будет вызывать доступ за пределы и ожидает одиночный символ. – nyrl
Спросите своего профессора. почему он/она не научил вас, как использовать отладчик, прежде чем задавать такие вещи. –