В настоящее время я пытаюсь научить себя C, так как считаю, что это будет хороший переход на C++ и C# (а также получение головного двора до начала занятий). Так что я решил написать эту петлю здесь:Петля повторяется?
#include <stdio.h>
int main()
{
bool continueLoop = true;
char response;
printf("ARE YOU READY TO RUMBLE?!?!\n Y/N\n");
response = getchar();
int counter = 0;
do
{
counter++;
if (response == 'Y')
{
printf("AWESOME!");
continueLoop == false;
return 0;
}
else if (response == 'N')
{
printf("YOU FAIL!");
continueLoop == false;
return 0;
}
if (continueLoop == true)
{
printf("I do not understand your input!\n");
printf("Please reinput! Y/N\n");
response = getchar();
}
if(counter == 5)
{
printf("Exiting!");
continueLoop == false;
goto exit;
}
}while (continueLoop == true);
exit:
return 0;
}
Мой вопрос (ы) является (являются) следующим образом: Почему это, когда, если I вход, например, «М», как мой ответ сам по себе, это будет цикл в два раза ; однако, если ему дано надлежащее условие, то оно заканчивается правильно.
Кроме того, вместо getchar()
я должен вместо преобразования ответа в одну длину массива, а затем попытаться сравнить его как-то, или, возможно, это должно быть сделано с помощью заявления PRINTF, как так printf("ARE YOU READY TO RUMBLE?!? \n %s", response);
Если это поможет, я я использую C-Lion в качестве моей IDE, поскольку я отказываюсь писать какой-либо код в vi, emacs или в блокноте.
EDITED КОД
int main()
{
char response;
printf("ARE YOU READY TO RUMBLE?!?!\n Y/N\n");
scanf(" %c", &response);
int counter = 0;
while (counter < 5)
{
counter++;
if (response == 'Y')
{
printf("AWESOME!");
return 0;
}
else if (response == 'N')
{
printf("YOU FAIL!");
return 0;
}
else
{
printf("I do not understand your input!\n");
printf("Please reinput! Y/N\n");
response = getchar();
}
}
return 0;
}
При вводе 'M' вы нажимаете два ключа. Вот почему цикл выполняется дважды.И используйте ==, когда вы хотите * сравнить * две вещи и * = *, когда хотите назначить две вещи. Также использование 'goto' нас считается плохой практикой. В этом случае вы можете заменить 'goto'' break'. –
Сторона примечания: 'while (continueLoop)' достаточно. – m0skit0
.... второй ключ, согласно комментарию * Cool Guy *, является клавишей Enter. – alk