01/10/2018, 12:22

Hỏi về cách vừa cho người dùng nhập giá trị, vừa in đồng hồ đếm thời gian trong lúc nhập trong C/C++

Chào mọi người, hiện tại em đang viết một project console bằng C/C++, trong đó có một phần đó là giới hạn thời gian nhập của người dùng nên em muốn hỏi là có cách nào để trong lúc người dùng đang nhập (lệnh scanf hoặc cin đang được chạy) mà vẫn có thể in ra màn hình bộ đếm ngược thời gian hay không, dạng như xử lí tiến trình song song. Em cảm ơn

Trần Hoàn viết 14:30 ngày 01/10/2018

Liên tục xoá màn hình và in ra

Hứa Anh Minh viết 14:26 ngày 01/10/2018

đang nhập thì xóa màn hình thế nào, lệnh scanf vẫn đang chạy ấy, lúc đó nó đang yêu cầu nhập vô.

HK boy viết 14:38 ngày 01/10/2018
gotoxy(vị trí đồng hồ đếm ngược);
cập nhật đồng hồ đếm ngược;
đưa về chỗ nhập;
sleep(1000);
Hứa Anh Minh viết 14:30 ngày 01/10/2018

kiểu thế này

int n
scanf("%d", &n); //vừa chạy scanf vừa chạy đồng hồ, nếu đồng hồ trở về 0 lập tức hủy scanf
Dark.Hades viết 14:31 ngày 01/10/2018

Cái này bạn bắt buộc phải tự viết một loop vẽ/xóa liên tục, tiếp theo là dùng API nhận diện phím vừa gõ do OS cung cấp, sau đó ghi lại vào 1 buffer, scanf hay std::cin đều vô hiệu ở đây.

Trên linux thì có hỗ trợ <termios.h>
Trên Windows chắc đơn giản hơn, bạn có thể Google. (hình như hàm kbhit() thì phải)

Để giải quyết vấn đề của bạn thì không cần tới thread, tuy nhiên nên suy nghĩ theo hướng lập trình game.
(Để sử dụng thread trên một ứng dụng Console không phải chuyện đơn giản, bởi vì bạn không thể điều khiển màn hình duy nhất qua thread khác một cách dễ dàng như các APP GUI được.)

Bài liên quan
0