while中调用函数,用函数返回值来保持循环,可是循环只进行了一次,不知道为什么。。。。

fredshao 2011-11-26 09:15:47
不知道为什么,while循环只运行了一次,当第二次循环时,没有执行,直接跳出了。。。。
输入y,第二次循环不执行。。。。
我是在LINUX系统下

#include<stdio.h>
void eat_hamberger(void)
{
printf("come here ,eat a hamberger!\n\n");
}

int doyouhungry(void)
{
char ch='\0';
printf("Do you hungry?(y/n):");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
return 1;
}
else
{
return 0;
}
}


int
main(void)
{

while(doyouhungry())
{
eat_hamberger();
}

printf("playing...\n");


return 0;
}
...全文
304 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
二楼代码写得很明显了,是没有清除缓存...
wmy222 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 anyidan 的回复:]
改成
scanf(" %c",&ch);
试试
[/Quote]



新手同问。。。。。
fredshao 2011-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 anyidan 的回复:]

改成
scanf(" %c",&ch);
试试
[/Quote]
加了个空格,还真行了哎,能不能解释一下这是为什么啊
AnYidan 2011-11-26
  • 打赏
  • 举报
回复
改成
scanf(" %c",&ch);
试试
無_1024 2011-11-26
  • 打赏
  • 举报
回复

#include<stdio.h>
void eat_hamberger(void)
{
printf("come here ,eat a hamberger!\n\n");
}

int doyouhungry(void)
{
char ch='\0';
printf("Do you hungry?(y/n):");
fflush(stdin);//清除缓存
scanf("%c",&ch);
fflush(stdin);//清除缓存
if(ch=='y'||ch=='Y')
{
return 1;
}
else
{
return 0;
}
}


int
main(void)
{

while(doyouhungry())
{
eat_hamberger();
}

printf("playing...\n");


return 0;
}

flowingfirefly 2011-11-26
  • 打赏
  • 举报
回复
在scanf("%c",&ch);后面加上getchar();就好了

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧