Hàm fflush(stdin) dùng để làm gì?

Vâng em cảm ơn anh ạ, tạm em đang bắt đầu học C++ do có việc bận nên chưa có thời gian ạ :slight_smile:

1 Like

cơ mà anh không có fflush(stdin) thì nó vẫn bỏ qua đó thôi :smile:

#include
#include <stdio.h>

int main()
{
int a,b=0,c;
std::cin >> a;
fflush(stdin);
std::cin >> c;
std::cout << a << b << c;
return 0;
} //em làm theo lời anh bỏ fflush(stdin) nhập lại "1 2 " và “3” thì vẫn như lúc có fflush(stdin) đấy thôi … chả hiểu cái chỗ này luôn ^^ nghe rất nhiều thầy cô nói rồi nhưng em không biết là thầy cô có hiểu thật sự hay là không hiểu … ??! rất mong anh có 1 bài giải đáp tường tận về vấn đề này

Nhập toàn số thì không cần. Với lại lệnh này là sai.

Em nghĩ là '\n' khác 'g' anh ơi :slight_smile: 

Anh ơi lệnh nào là đúng ạ ?

Thực ra lệnh flush sinh ra để ghi chứ không phải để đọc và VS cũng bỏ luôn rồi. Bạn sẽ dùng getchar() để lấy bớt kí tự ‘\n’.

1 Like
// Lấy '\n' từ stdin (bộ đệm)
char x = getchar();

// Nhập lại cho biến x
scanf("%c", &x);

Trong VS dùng std::cin.ignore(256, ‘\n’); đúng không ạ ?

C++ thì đúng :slight_smile: nhưng nên hiểu câu đó là “bỏ qua 256 kí tự ‘\n’”.

Có nghĩa là “Bỏ qua 256 lần ký tự \n” phải không ạ

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