01/10/2018, 16:15
Hàm fflush(stdin) hoạt động như thế nào trên linux?
Như các bác thấy trên hình, trong hàm Nhap()
mình đã có dùng fflush(stdin)
để xóa buffer rồi, nhưng vẫn bị trôi lệnh. Điều bựa hơn là cùng code này mình chạy trên Win thì ok, bác nào biết giải thích dùm mình với.
Thanks ALL.
code mình đây:
Ideone.com
Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.
Bài liên quan
Đừng dùng
fflush(stdin)
nữa. Chạy thêm 1 lầnfgets(buffer, ..., stdin)
để tống kí tự thừa vào 1 biến nào đó, từ đó yên tâm đọc dòng tiếp theo.P/s: Thử
xem, chỉ sợ không có hiệu quả.
Đến VS cũng dẹp câu lệnh này rồi
Lí do là vì flush là giật nước, trong lập trình nghĩa là tống buffer trong mem (volatile) xuống đĩa (hay terminal) non-volatile, tức là ghi lên. Vậy fflush chỉ có thể dùng để ghi.
vậy cách tốt nhất để giải quyết nó là gì bác ?
đọc từng ký tự tới khi nào gặp ký tự xuống dòng thì dừng, hoặc tới khi nào đọc hết stdin thì dừng: