Ошибка в цикле 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, что означает успешный конец работы программы.