C-怎么有两次输出“printf ‘#’ "
char c;
c='a';
while(c!='#')
{
printf("输入'#'退出n");
scanf("%c",&c);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
char c;
c='a';
while(c!='#')
{
printf("输入'#'退出n");
scanf("%c",&c);
}
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(8)
为免出现问题,每次清空输出缓冲区吧
例如你输入
a 回车
那么scanf会先从缓冲区读取a然后到下一循环会再读取回车。如果想解决这个问题很简单。这样子
char c;
c='a';
while(c!='#')
{
printf("输入'#'退出n");
scanf("%c",&c);
//加上下面这一句
fflush(stdin);
}
char c;
c='a';
while(c!='#')
{
printf("输入'#'退出n");
scanf("%c",&c);
}
按照结构一条一条分析,可以看出从理论上是只能输出一个的。。
C='a'然后判断,满足输出,然后输入,输入后再次判断,不满足退出while.
另外说的用fflush(stdin);
我想应该只是清空了键盘缓冲区,但是对C的赋值是已经发生了,在判断while的时候对C进行判断,和缓冲区应该没关系的吧。。。
这个源程序我想不到有什么办法输出两次,可能是我水平不够,我想可以的话使用do while语句应该是不错的选择。
char c;
c='a';
while(c!='#')
{
printf("输入'#'退出n");
scanf("%cn",&c);
}
这样应该也是可以的
经过测试只输出一次"输入'#'退出n"
记得课本上处理回车是再多添加个getchar()
如..... a=getchar();getchar(); ....
C-FREE-5 运行此代码只打印一次。。。
应该和执行的速度和缓存之间的时间差有关吧