30/09/2018, 19:09

Lỗi fflush(stdin) VS 2015

Em đang học C++ khi nhập vào fflush(stdin) trước getline(cin,ten)

khi chạy thử thì dấu enter vẫn bị nhận vào, em phải dùng cin.ignore() để thay thế cho fflush(stdin), em nhờ bạn chạy thử đoạn code trên máy nó thì vẫn hoạt động bình thường ??? nó dùng VS 2013 còn em dùng VS 2015, có ai có cách gì fix không giờ cài lại bản 2013 tốn thời gian quá.

viết 21:15 ngày 30/09/2018

fflush là để dành cho stdout. Xài fflush(stdin) thì gây ra undefined behavior. VS2015 làm vậy là đúng rồi. Xài cin.ignore(100, '\n'); mới đúng. Mấy thằng bạn viết fflush(stdin) là sai đó, kệ tụi nó

nếu kĩ hơn nữa thì viết là

cin.clear();   // clear cin nếu trước đó đọc vào bị lỗi
cin.ignore(numeric_limits<streamsize>::max(), '\n'); //bỏ qua tất cả ký tự cho đến khi gặp '\n' thì dừng
BX136 viết 21:20 ngày 30/09/2018

chuẩn… dùng cin.ignore(100,’\n’); của c++ là đẹp nhất

明玉 viết 21:26 ngày 30/09/2018

Không biết Microsoft đã làm gì mà VS2015 lại không dùng được fflush(stdin). Chỉ cần cin.clear() cin.ignore() là được rồi. Phải clear trước vì nếu std::cin đang bật cờ lỗi thì không ignore được.

Hiếu Trần viết 21:12 ngày 30/09/2018

Tks mọi người nhé, cứ tưởng bị lỗi phải cài lại

Chu Quyết viết 21:14 ngày 30/09/2018

rewind(stdin) or while(getchar() != ‘\n’);

Bài liên quan
0