我希望该程序实现如下小功能,但 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();就解决
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行