设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
我希望该程序实现如下小功能,但 getch()可以实现 getch ...
返回列表
发新帖
我希望该程序实现如下小功能,但 getch()可以实现 getchar(), scanf()则不行 求解释
[复制链接]
11
|
1
|
2011-3-17 03:41:40
|
显示全部楼层
|
阅读模式
首先
窗口打印出
test num 1
continue?(y/n)
输入y则 打印出
test num 2
continue?(y/n)
.......
代码如下
#include stdio.h
#include stdlib.h
#include conio.h
int main()
{
int i = 0;
while(true){
char c;
i;
printf(\"\\n\\ntest num %d\\n\",i);
printf(\"continue?(y/n)\") ;
//scanf(\"%c\",
//不行
//c = getchar();
//不行
c = getch();
//行
if(c==\'y\')
{
//system(\"cls\");
}
else
{
printf(\"\\n\");
break;
}
}
system(\"pause\");
return 0;
}
回复
使用道具
举报
千问
|
2011-3-17 03:41:40
|
显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">getchar();可以的,要连续用两个。
c=getchar();
getchar();
原因是关于缓冲区的问题,因为getchar()要按回车后才从缓冲区读一个字符。如果只写一个的话,假如你输入:Y再按回车。那么c=getchar();这句就读走了Y。但是回车还在缓冲区中。第二次循环c=getchar():又来了,缓冲区里有数据(回车);它就直接把回车读走了。所以C!=Y,程序结束。
因此再在c=getchar();后面加一个getchar();用来接收回车。下次循环的时候,缓冲区空的, 才会让你输入。
scanf的问题同理, 后面加一个getchar();就解决
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行