Làm thế nào để xử lý ký tự thừa trong stdin mà không dùng fflush(stdin)

Em có code như sau:

char a[3];
cin.getline(a, 3);  

// Em nhập vào là 123456789 (coi như là nhập vượt quá giới hạn quy định trong hàm getline(a, 3)) => trong stdin còn thừa 3456789 và dấu enter

char b[5];
cin.getline(b, 5);
cout << b;

Vậy làm sao để có thể nhập cho b được ạ?

Dùng cin.ignore().

1 Like

Em thử rồi nhưng không được, vì cin.ignore() chỉ xóa 1 ký tự mà thôi

Bạn làm theo link này là được nhé.

Demo:

1 Like

Đặc điểm chung của các cách đó đều là chạy một vòng lặp để nó tiêu thụ toàn bộ những dữ liệu còn lại trong stdin.

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