Thắc mắc tại sao lệnh fflush(stdin) không có tác dụng?

#include<iostream>
#include<string>

using namespace std;

void main()
{
	int ngay, thang, nam;
	cout << "Nhap ngay thang nam sinh";
	cin >> ngay >> thang >> nam;
	cout << "ban sinh ngay:" << ngay << "-" << thang << "-" << nam << endl;
	cout << "Nhap ten cua ban: ";
	string ten;
	fflush(stdin);
	getline(cin, ten);
	cout << "Ten cua ban la: " << ten << endl;
	system("pause");
}

em mới học c++ và viết chương trình đơn giản như trên? nhưng cỏ vẻ như lệnh fflush(stdin) không có tác dụng( còn dùng lệnh cin.ignore() thì vẫn ổn). Mọi người giải thích dùm em với!

Bạn dùng chức năng tìm kiếm trên diễn đàn nhé, vấn đề này được bàn nhiều lần rồi, chẳng hạn như topic này:

1 Like

@freedom cảm ơn bạn, mình tìm nhiều mà ko ra nên mới lên đây hỏi :frowning:

1 Like

nó chạy ra ntn bạn? bạn thử thêm 1 cái fflush(stdin) ngay dưới nữa coi sao

vẫn bị bạn à. nghĩa là nó lấy ký tự enter dư lúc ta vừa nhập lúc trên vào chuỗi cần nhập tiếp theo đó bạn

Bạn thử thay fflush(stdin) bằng 1 câu lệnh sau: while(getchar() != '\n' && getchar() != EOF) {}

1 Like

Visual 2013 trở lên ko còn hỗ trợ fflush nữa. Bạn thay lệnh nhập bằng getline+cin.ignore là đc

3 Likes

thì lệnh cin.gnore đc, tại thì thấy demo lệnh fflush(stdin) đc mà m code lại ko được nên tò mò. cảm ơn các bạn :smiley:

Thiếu thư viện #include<conio.h>
fflush(stdin) nằm trong thư viện đó

Bản thân câu lệnh đã tự mâu thuẫn rồi vì flush là khái niệm của luồng ghi :smiley: undefined rồi.

3 Likes

hỏi từ 2016 h mới trả lời :v

image

Đào mộ có gì vui :v

Bạn ấy sửa cho bạn thôi chứ 2016 gì chứ :v

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