[VS-specific] Lỗi fflush(stdin)

Cho đang dùng Visual studio 2013 ultimate thấy khá ổn
Mấy hôm trước mình có cài thử cái VS 2015 bản community free trên trang chủ
Mình viết chương trình chạy rất OK nhưng chả hiểu sao có lệnh fflush(stdin) trên bản 2015 nó không hoạt động, mình dùng nó mà chương trình vẫn bị trôi lệnh nhưng chưa dùng.
Mình có test lại bằng bản 2013 nhưng nó vẫn chạy bình thường.
Ai biết vấn đề ở đâu giúp mình với :blush:

Microsoft Visual Studio 2015 sẽ không dùng được lệnh fflush(stdin); nữa.
Bạn có thể thay thế bằng dòng lệnh này: while (getchar() != '\n' && getchar() != EOF) {}

Bạn nên tham khảo cách dùng các hàm thông qua google để biết cách sử dụng đúng hơn:

1 Like

bạn thử dùng hàm rewind(stdin) xem.

2 Likes

Sao rewind(stdin) lại xóa đc bộ nhớ đệm thay fflush(stdin) vậy bạn

Lệnh rewind(stdin) chỉ dùng cho VS mà thôi.

2 Likes

bạn có biết lí do tại sao fflush(stdin) lại k xóa được enter nữa không vậy?

Thực sự thì fflush không có nghĩa gì cả trong các luồng đọc như stdin, flush nghĩa là ghi từ buffer xuống đĩa, nên sau này trừ mỗi MS (VS) thì không ai hỗ trợ fflush(stdin). Vả lại stdin không phải chỉ có người nhập, mà còn có thể là do dẫn từ file vào nữa, nên xóa đi là sai.

ostream points to an output stream or an update stream in which the most recent operation was not input, the fflush function causes any unwritten data for that stream to be delivered to the host environment to be written to the file; otherwise, the behavior is undefined.

Ngay cả POSIX cũng có hạn chế: chỉ sử dụng fflush cho những luồng đọc có thể seek, mà stdin không có seek.

2 Likes

Mình hiểu rồi . Cảm ơn bạn nhiều <3

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