为什么在输入字符之前需要%d?

Shi*_*ore 2 c

我已经尝试过以下代码,在输入字符之前需要%d.这是代码中的后切换循环.

#include<stdio.h>
#include<conio.h>
void sum();
void mul();
void main()
{
char ch;
int c;
clrscr();
do
{
    printf("\n\n Enetr choice ");
    printf("\n\n\t 1: SUM \n\n\t 2: MUL");
    scanf("\n\n\t %d",&c);
    switch(c)
    {
        case 1:
            sum();
            break;
        case 2:
            mul();
            break;
        default:
            printf("\n\n hhhh..... ");
    }
    printf("\n\n Want u calcualte again");
    //scanf("%d");
    scanf("%c",&ch);
    printf("\n ch value is %c",ch);
}while(ch=='y'|| ch=='Y');
getch();
}
void sum()
{
int s;
s=10+50;
printf(" SUM: %d",s);
}
void mul()
{
int s;
s=10*50;
printf(" SUM: %d",s);
}  
Run Code Online (Sandbox Code Playgroud)

在这个代码中,我在切换后尝试输入字符,但是在输入字符时没有需要注释的scanf语句.没有那个scanf语句编译器不接受字符输入.所以请给我解决方案.

P0W*_*P0W 6

这是因为你必须从以前的输入"吃掉"换行符

你不必使用%d.

而是使用:

while((c = getchar()) != '\n' && c != EOF) ;

代替

//scanf("%d");

丢弃换行符.