Ошибка в цикле While - C (СИ) (70642)

Узнай цену своей работы

Формулировка задачи:

Написал цикл. При нажатии определенной клавиши происходит выход из цикла и программы. Когда переменная

exitWhile

- тип

int

, то цикл отрабатывает нормально. Но вот никак не пойму почему при объявлении ее типом

char

цикл срабатывает 2 раза при неправильном вводе клавиши. Код с объявлением типа

char

:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. int main(void){
  5. char exitWhile = 'A';
  6. setlocale(LC_ALL, "Rus");
  7. while(exitWhile != 'q'){
  8. printf("Для выхода требуется ввести: q \n");
  9. printf("Команда:");
  10. scanf("%c", &exitWhile);
  11. }
  12. return 0;
  13. }
Пример неправильного срабатывания:

Решение задачи: «Ошибка в цикле While»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void){
  5.     char exitWhile = 'A';
  6.     char tmp;
  7.     while(exitWhile != 'q') {
  8.         scanf("%c%c", &exitWhile, &tmp); // в tmp будет "\n"
  9.     }
  10.     return 0;
  11. }

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут