01/10/2018, 16:49
Hàm _kbhit() lặp vô hạn
Mình định viết chương trình: cho 1 khoảng thời gian để nhập nếu có 1 phím vừa nhập chương trình sẽ in ra 1 chuỗi “chao ban”, nhập 1 phím chương trình sẽ in 1 lần, nếu không có thì chương trình sẽ kết thúc. Nhưng chương trình mình viết nếu nhấn 1 lần thôi thì sẽ lặp vô hạn. Mọi người giúp mình với.
void main(){
char ch;
do
{
printf("chao ban");
Sleep(3000);
ch = _kbhit();
} while (_kbhit());
_getch();
}
Bài liên quan
From MDS
nhầm! lệnh ch=_kbhit(); thật ra k có tác dụng gì
Mình muốn là nhấn 1 phím thì nó in ra 1 lần
nhưng mà mình nhấn 1 phím thì nó in liên tục lun
Nó in liện tục vì _kbhit() luôn trả về giá trị khác 0 sau khi bạn nhấn 1 phím.
Cứ thế vòng lặp sẽ lặp mãi.
Phải dùng _getch hoặc _getche để bỏ đệm _kbhit. Khi đó nó sẽ trả về 0 ở lần gọi sau.
https://msdn.microsoft.com/en-us/library/58w7c94c.aspx
cảm ơn bạn nhiều!!!
Bạn đọc kĩ đoạn mình bôi đậm nhé
À mình hiểu r! cảm ơn bạn <3