void print()
{
char a;
printf("输入字符:");
a=getchar();
}
int main()
{
int n;
printf("1.输入\n2.输出\n");
scanf("%d",&n);
if(n==1)
print();
}
先不要讨论这个程序的实用性!
当输入1时调用print(),当时程序自动跳过了a=getchar()
要是我把
int n;
printf("1.输入\n2.输出\n");
scanf("%d",&n);
这段去掉,这样就直接调用了print(),没有跳过a=getchar(),究竟是什么原因?
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void print()
{
char a;
printf("input:\n");
a=getchar();
printf("a=%d\n",a);
getchar();
getchar();
}
int main()
{
int n;
printf("input a number\n");
scanf("%d",&n);
if(n)
print();
}
你看一下,getchar();语句起停住屏幕作用
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void print()
{
char a;
printf("输入字符:");
a=getchar();
}
int main()
{
int n;
printf("1.输入\n2.输出\n");
scanf("%d",&n);
if(n==1)
print();
}
先不要讨论这个程序的实用性!
当输入1时调用print(),当时程序自动跳过了a=getchar() //接受了你前面scanf留下的回车字符
要是我把
int n;
printf("1.输入\n2.输出\n");
scanf("%d",&n);
这段去掉,这样就直接调用了print(),没有跳过a=getchar(),究竟是什么原因?
----------------解决方案--------------------------------------------------------
a=getchar()!='\n'
----------------解决方案--------------------------------------------------------
键盘缓冲``
----------------解决方案--------------------------------------------------------
a=getchar()!='\n'
自己调哈就知道
比如:void print()
{
char a;
printf("输入字符:");
a=getchar();
printf("%c",a);
}
int main()
{
int n;
printf("1.输入\n2.输出\n");
scanf("%d",&n);
if(n==1)
print();
getchar();
return 0;
}
看下程序如何变化....
----------------解决方案--------------------------------------------------------
那个问题应该怎么样解决呢,有没有其它解决办法,除了楼上说的?
----------------解决方案--------------------------------------------------------
是不是调用函数要求输入时就会出现这种情况?
----------------解决方案--------------------------------------------------------