Vì sao mỗi lần nhập vào một chuỗi kí tự lại phải dùng lệnh fflush(stdin)?

void mayinkim::nhap(){
	fflush(stdin);
	cout<<"nhap vao trong luong may: ";
	getline(cin,trongluongmay);
	cout<<"nhap vao nam san xuat: ";
	cin>>namsanxuat;
	fflush(stdin);
	cout<<"nhap vo hang san xuat: ";
	getline(cin,hangsanxuat);
	cout<<"nhap vao so kim: ";
	cin>>sokim;
	fflush(stdin);
	cout<<"nhap vao toc do in: ";
	getline(cin,tocdoin);
}

Có thể xem ở đây: Hàm fflush(stdin) dùng để làm gì?
markdown là dấu ` khong phải dâu '. Trước cũng nhầm mấy lần.

1 Like

dấu markdown là dấu gì v? Là 2 dấu nháy đơn đó ha…


là phím nằm dưới phím ESC

1 Like

thanks anh nhé… :grinning:

fflush(stdin) nếu mình nhớ không nhầm thì là xoá bộ nhớ đệm thì phải, VD như thế này khi bạn nhập một kí tự thì khi bạn nhấn trong máy đã nhận được rất nhiều kí tự như vậy .Dùng hàm này có thể tránh được hậu quả để lại của các thao tác nhập trước đó

vd như bài này. nếu nhập vào thông tin của 2 hs thì nó chỉ lưu có 1 hs nhập sau thôi, còn hs trước bị nó xóa mất tiêu r.

#include
#define MAX 30
#include
using namespace std;

int main(){
struct nhanvien{
int manv;
char hoten[30];
char chucvu[30];
};

int i, in;
cout<<"nhap vao so nhan vien: ";
cin>>in;

nhanvien nv;

for(i=0;i<in;i++){
	cout<<"nhap vao nhan vien thu "<<i+1<<endl;
	fflush(stdin);
	cout<<"nhap vao ho ten: ";
	gets(nv.hoten);
	fflush(stdin);
	cout<<"nhap vao ma nhan vien: ";
	cin>>nv.manv;
	fflush(stdin);
	cout<<"nhap vao chuc vu: ";
	gets(nv.chucvu);
	cout<<endl;
}

for(i=0;i<in;i++){
	cout<<"nhan vien thu "<<i+1<<": "<<endl;
	cout<<"ho ten: "<<nv.hoten<<endl;
	cout<<"ma nhan vien: "<<nv.manv<<endl;
	cout<<"chuc vu: "<<nv.chucvu<<endl;
	cout<<endl;
}

system("pause");
return 0;

}

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