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

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

đ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ô.

gotoxy(vị trí đồng hồ đếm ngược);
cập nhật đồng hồ đếm ngược;
đưa về chỗ nhập;
sleep(1000);
1 Like

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

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.)

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?