Я написал программу, чтобы получить строковый ввод от пользователя и проанализировать его в токенах и переместить робота в соответствии с вводом. Моя проблема заключается в попытке выпустить несколько команд. Код выглядит следующим образом:Почему wont мой цикл while принимает новый вход (C++)
void Navigator::manualDrive()
{
const int bufSize = 42;
char uinput[bufSize];
char delim[] = " ";
char *token;
while(true)
{
Navigator::parseInstruction(uinput);
}
}
/* parseInstruction(char *c) -- parses cstring instructions received
* and moves robot accordingly
*/
void Navigator::parseInstruction(char * c)
{
const int bufSize = 42;
char uinput[bufSize];
char delim[] = " ";
char *token;
cout << "Enter your directions below: \n";
cin.ignore();
cin.getline (uinput, bufSize);
token=strtok(uinput, delim);
if(strcmp("forward", token) == 0)
{
int inches;
token = strtok(NULL, delim);
inches = atoi (token);
Navigator::travel(inches);
}
if(strcmp("back",token) == 0)
{
int inches;
token = strtok(NULL, delim);
inches = atoi (token);
double value = fabs(0.0735 * fabs(inches) - 0.0550);
myRobot.backward(1/*speed*/, value/*time*/);
}
if(strcmp("turn",token) == 0)
{
int degrees;
token = strtok(NULL, delim);
if(strcmp("left",token) == 0)
{
token = strtok(uinput, delim);
degrees = atoi (token);
double value = fabs(0.0041 * degrees - 0.0523);
myRobot.turnLeft(1/*speed*/, value/*time*/);
}
}
if(strcmp("turn",token) == 0)
{
int degrees;
token = strtok(NULL, delim);
if(strcmp("right",token) == 0)
{
token = strtok(uinput, delim);
degrees = atoi (token);
double value = fabs(0.0041 * degrees - 0.0523);
myRobot.turnRight(1/*speed*/, value/*time*/);
}
}
if(strcmp("stop",token) == 0)
{
myRobot.motors(0,0);
}
}
В функции manualDrive У меня есть цикл при вызове функции parseInstruction бесконечно. Вывод программы «Введите следующие направления:« Когда я даю инструкции программы, он их исполняет, а затем он выводит «снова введите свои указания ниже:», и когда я снова вводю свои указания, он не выполняет их и выдает »Введите свои указания ниже: «вместо этого. Я уверен, что это очень простое решение. Я просто очень новичок в C++. Поэтому, если вы могли бы помочь мне помочь и рассказать мне, почему программа принимает только первый набор направлений. thanks
С точки зрения вопроса, я думаю, у вас есть некоторые проблемы с форматированием. Убедитесь, что перед всеми строками кода есть четыре пробела. –
Извините, что я попытался это исправить. – Van
Спасибо за исправление моей проблемы с отступом – Van