Scanf не сканирует символ% c, но пропускает утверждение, почему это так?

Я написал программу, используя оператор switch case, и попросил ввести символ для ввода, но он не запрашивает символ в окне консоли, а полностью его пропускает

int main() 
{
    float a, b, ans;
    char opr;

    printf("\nGIVE THE VALUES OF THE TWO NUMBERS\n");
    scanf(" %f %f",&a,&b);


    printf("\nGIVE THE REQUIRED OPERATOR\n");   

    //no display(echo) on the screen
    //opr = getch();
    //displays on the screen
    //opr = getche();

    scanf("%c",&opr);

    switch(opr)
    {
        case '+' :
            ans = a+b;
            printf("%f", ans);
            break;          
        case '-' :
            ans = a-b;
            printf("%f", ans);
            break;          
        case '*' :
            ans = a*b;
            printf("%f", ans);
            break;          
        case '/' :
            ans = a/b;
            printf("%f", ans);
            break;
        case '%' :
            ans = (int)a % (int)b;
            printf("%f", ans);
            break;
        default :
            printf("\nGIVE A VALID OPRATOR\n");

    }

    system("pause");        
    return 0;

но когда я ставлю пробел перед%c во-вторыхscanf это работает, кто-то говорил что-то про пробелы, которые я нашел сбивающим с толку

Сказал второйscanf принимает значение\n как персонаж, и если я поставлю пробел перед%c во-вторыхscanf разве это не персонаж и не занимает ли он пространство как персонаж?

Но в этой программе он не принимает\n как персонаж

int main() 
{
    char a;
    printf("\ngive a char\n");
    scanf("%c",&a);
    printf("%c",a);

    return 0;
}  

Это действительно сбивает с толку любой может помочь мне, я хочу узнать, что не так.

Ответы на вопрос(4)

Ваш ответ на вопрос