Ошибка в цикле While - C (СИ) (70642)
Формулировка задачи:
Написал цикл. При нажатии определенной клавиши происходит выход из цикла и программы. Когда переменная
Пример неправильного срабатывания:
exitWhile
- типint
, то цикл отрабатывает нормально. Но вот никак не пойму почему при объявлении ее типомchar
цикл срабатывает 2 раза при неправильном вводе клавиши. Код с объявлением типаchar
:
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h>
- int main(void){
- char exitWhile = 'A';
- setlocale(LC_ALL, "Rus");
- while(exitWhile != 'q'){
- printf("Для выхода требуется ввести: q \n");
- printf("Команда:");
- scanf("%c", &exitWhile);
- }
- return 0;
- }
Решение задачи: «Ошибка в цикле While»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- int main(void){
- char exitWhile = 'A';
- char tmp;
- while(exitWhile != 'q') {
- scanf("%c%c", &exitWhile, &tmp); // в tmp будет "\n"
- }
- return 0;
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и для работы с памятью.
- Объявление двух переменных типа char: exitWhile и tmp.
- Вход в цикл while, условием которого является неравенство exitWhile и 'q'.
- Внутри цикла происходит считывание двух символов в переменные exitWhile и tmp с помощью функции scanf.
- Цикл продолжается до тех пор, пока значение переменной exitWhile не станет равным 'q'.
- После выхода из цикла происходит возврат в основную программу и вычисление значения 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д