从控制台读取字符

Yak*_*kov 9 c scanf getchar

我编写控制台应用程序,为i​​nt执行几个scanf,然后执行getchar:

int x,y;
char c;
printf("x:\n");
scanf("%d",&x);
printf("y:\n");
scanf("%d",&y);
c = getchar();
Run Code Online (Sandbox Code Playgroud)

因此,我得到了c = '\n',尽管输入是:

1
2
a
Run Code Online (Sandbox Code Playgroud)

这个问题怎么解决?

Fre*_*Foo 12

这是因为scanf保留您在输入流中键入的换行符.尝试

do
    c = getchar();
while (isspace(c));
Run Code Online (Sandbox Code Playgroud)

代替

c = getchar();
Run Code Online (Sandbox Code Playgroud)