c++代码问题~为什么只会执行一次

如题~~~最近在学function函数(不知道中文叫啥= =)
编了个代码如下。。为什么执行第二次info的时候就无法读取输入字符呢??(我执行后输入第一个a之后就直接结束了,但是第一次读取应该是成功的为什么第二次就不行呢?)
#include <stdio.h> char info(char a); char x,y;char main(void){x=info(x);printf("%c",x);y=info(y);printf("%c",y);}char info(char a){printf("\nPlease enter a letter (A-Z): ");scanf("%c",&a);return a;}

第1个回答  2013-11-02
在scanf("%c",&a);中的%前加一个空格,写成scanf(" %c",&a);就行了。"%c"把回车('\n')也是当作字符的。它只接收一个字符,而你键入字符后必须有个回车才能生效,这个回车被留在缓冲区,被第二个scanf接收了,你没看见黑框框中的最后一个F:\>前空了一行吗?那就是第二个scanf接收的回车。在%前加一个空格后,这个空格会键入的那个回车吸收掉……
第2个回答  2013-11-02
您好!很高兴为您解答。

function本身就是函数的意思。

C语言中,按下回车键视为输入了一个字符“\n”,当输入“A”并按下回车确认输入后,系统默认第二个输入内容是“\n”,因此看上去是跳过了一次输入。

如改为:

#include <stdio.h>
char info(char a);
char x,y;
char main(void)
{
x=info(x);
printf("%c",x);
y=info(y);
printf("%c",y);
}
char info(char a)
{printf("\nPlease enter a letter (A-Z): ");
scanf("%c",&a);
scanf("%c",&a);//再加一句scanf可以抵消回车的影响
return a;}

望采纳~如您还有不解,欢迎追问~
第3个回答  推荐于2016-10-21

function的中文是“函数”

因为缓存里有一个回车,第二次读到的是一个回车

#include <stdio.h>
char info(char a);
char x,y;
char main(void)
{
    x=info(x);
    printf("%c",x);
    y=info(y);
    printf("%c",y);
}
char info(char a)
{
    printf("\nPlease enter a letter (A-Z): ");
    scanf("%c",&a);
    getchar();//////
    return a;
}

本回答被提问者采纳
第4个回答  2013-11-02
刷一下缓冲区就可以了,否则输入a字符,然后回车,这个回车就是你输入的下一个字符了,等于什么都没输入。
x=info(x);
printf("%c",x);
fflush(stdin);
y=info(y);
printf("%c",y);
第5个回答  2013-11-02
fflush(stdin); // 刷新输入缓冲
scanf("%c",&a);

相似回答