Странное поведение условного выражения в цикле while из-за некоторых проблем с функцией ввода (scanf ()) с символом - PullRequest
0 голосов
/ 10 декабря 2018

Я новичок в C. Я хотел бы заставить этот код работать, чтобы выйти из цикла while, когда пользователь вводит буквы f или F.

#include <stdio.h> /*Imported to print in our screen and to input values.*/
#include <conio.h> /*Imported to use the function _clrscre to clear the screen*/
#include <stdlib.h> /*imported because we want to use the sleep function*/

void main()
{

    char inputChar;  
    do
    {

        _clrscr();
        printf("*****************\n*** Main menu ***\n*****************\n\n");

        /*clear buffer and create a variable as a placeholder for the input character the user will input*/
        fflush(stdin);
        scanf("%c",&inputChar);

    }
    while ((inputChar != 'F') || (inputChar != 'f'));

    _clrscr();
    printf("End of the program!\n");
    _sleep(1);
    printf("Bye, user!\n");
    _sleep(2);

Строка while ((inputChar != 'F') || (inputChar != 'f')); должна сделать программучтобы выйти из цикла while, один из этих двух символов вводится пользователем.Однако это не так.

Если бы я заменил вышеупомянутую строку на while (inputChar != 'F'), тогда программа работала бы правильно, выходя из цикла while, но только тогда, когда пользователь вводит заглавную букву F (я хочудва случая, которые будут покрыты с использованием этого синтаксиса, а не только один ... и я не хочу использовать операторы переключения регистра).

Есть идеи?Я полагаю, что проблема связана с функцией scanf и / или ее форматированием, или, возможно, с логическим выражением, но я не совсем уверен, в чем проблема.

Спасибо всем!

1 Ответ

0 голосов
/ 10 декабря 2018

Вы должны использовать && вместо ||.

while ((inputChar != 'F') && (inputChar != 'f'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...