Ошибка в цикле 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;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с файлами и для работы с памятью.
  2. Объявление двух переменных типа char: exitWhile и tmp.
  3. Вход в цикл while, условием которого является неравенство exitWhile и 'q'.
  4. Внутри цикла происходит считывание двух символов в переменные exitWhile и tmp с помощью функции scanf.
  5. Цикл продолжается до тех пор, пока значение переменной exitWhile не станет равным 'q'.
  6. После выхода из цикла происходит возврат в основную программу и вычисление значения 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5