scanf(" %c", &move);
scanf(" %c", &entry);
Люди обычно используют getch()
для таких случаев.Это более прямо.
char a1 = move; move++; char a2 = move;
char q1 = entry ; entry++ ; char d1 = entry;
Это действительно странные вещи.Что вы пытаетесь сделать?
char move;
char entry;
Хорошая практика программирования говорит нам, что переменные должны быть определены только в начале функции.Обычно компиляторы отклоняют определения в середине функции.
Комментарий:
printf ("\ nДля поворота введите квадрант q (1: NW, 2: NE, 3: SW, 4: SE) и направление d (c: по часовой стрелке, w: против часовой стрелки) в заданном формате: qd \ n Например, 2w указываетповорот против часовой стрелки в северо-восточном квадранте. ");
запрашивает использование для предоставления 2 символов, не являющихся пробелами.Один используется вторым scanf()
(тот, что сразу после комментария), а другой остается в буфере.Затем он потребляется первым scanf()
.Вот почему у вас есть «иллюзия», что некоторые scanf()
не выполняются.
Какие клавиши вы используете для движения?Некоторые клавиши (например, стрелки) на самом деле генерируют последовательность из 2 символов: первая всегда 0x00, а вторая специфична для каждой клавиши.Это может быть еще одним источником удивления.
Вы неправильно обрабатываете ситуации, когда ключ не является одним из ожидаемых ключей.В этих случаях все части кода должны быть пропущены и цикл перезапущен.