当前位置: 代码迷 >> C语言 >> [求助]简单的函数调用问题!
  详细解决方案

[求助]简单的函数调用问题!

热度:196   发布时间:2007-06-24 02:52:21.0
[求助]简单的函数调用问题!
#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()
要是我把
int n;
printf("1.输入\n2.输出\n");
scanf("%d",&n);
这段去掉,这样就直接调用了print(),没有跳过a=getchar(),究竟是什么原因?
搜索更多相关的解决方案: 函数  print  getchar  scanf  

----------------解决方案--------------------------------------------------------

#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();语句起停住屏幕作用


----------------解决方案--------------------------------------------------------
以下是引用lucis009在2007-6-24 2:52:21的发言:
#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'
----------------解决方案--------------------------------------------------------
键盘缓冲``
----------------解决方案--------------------------------------------------------

以下是引用huangfengchu在2007-6-24 10:25:19的发言:
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;
}


看下程序如何变化....


----------------解决方案--------------------------------------------------------
那个问题应该怎么样解决呢,有没有其它解决办法,除了楼上说的?


----------------解决方案--------------------------------------------------------
是不是调用函数要求输入时就会出现这种情况?
----------------解决方案--------------------------------------------------------
  相关解决方案