奇怪的getch()??奇怪的VC??
getch()在VC下使用是不是有问题??
比如下面这个再简单不过的程序:
控制台程序:
#include<conio.h>
#include<stdio.h>
void main()
{
int a;
puts("press a key ");
getch();
printf("insert something: ");
scanf("%d",&a);
}
屏幕上,在等待scanf时,在insert something: 的后面,一定会出现刚才getch()进去的那个字符。虽然我可以退格去掉它,但实在不完美。
这是键盘缓冲区没有清净???好像不是。我把所有的方法都用了也不行。比如像下面这样:
#include<conio.h>
#include<stdio.h>
void main()
{
int a;
puts("press a key ");
getch();
fflush(stdin);
printf("insert something: ");
while(kbhit())
getch();
fflush(stdin);
scanf("%d",&a);
while(kbhit())
getch();
fflush(stdin);
}
结果还是不行,那个字符还是有。
最奇怪的是,上面的代码在TC下编译并没有问题(我的是3.0),没有那个字符出来。但在VC下编译就是不行。
这是怎么回事?VC下的getch()用法特殊?难道是VC的bug?还是我的VC设置有问题??
另请问:那我在VC下如何解决这个问题??
问题点数:80、回复次数:6Top
1 楼wyzegg(蛋)回复于 2001-10-21 23:52:24 得分 40
实战结果就是结论
Top
2 楼Sword_Sharp(多米诺)回复于 2001-10-21 23:52:48 得分 40
我运行时美有问题呀!(VC++6.0/win2000)Top
3 楼santaga(lynn)回复于 2001-10-21 23:54:48 得分 0
gzTop
4 楼eternalee(看看)回复于 2001-10-21 23:58:13 得分 0
看看
Top
5 楼yiyuan(一元)回复于 2001-10-22 00:51:57 得分 0
没有问题???我的是VC6,win98。
是大家的都没有问题吗??就我自己的有问题??Top
6 楼SlaSk(七叔)回复于 2001-10-22 07:57:59 得分 0
getch()
好像会把字符存储到缓冲区,你必须显式的把他传出来(或者缓冲满了),它才会自己出来。Top




