Giúp sửa lỗi trôi lệnh

Mọi người ơi mình debug code này mà nó bị trôi lệnh ko cho nhập “ma doanh nghiep” thì giờ sửa làm sao vậy.:((

#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
//
struct doanhnghiep {
	char madn[10];
	char director[20];
	float vondl;
	unsigned int nhanvien;

} ;
//
void indn(doanhnghiep a[], int i) {
	cout << "Nhap ma doanh nghiep: ";
	fflush(stdin);
	gets_s(a[i].madn);
	cout << "Nhap ten giam doc: ";
	fflush(stdin);
	gets_s(a[i].director);
	cout << "Nhap so von doanh nghiep: ";
	cin >> a[i].vondl;
	cout << "Nhap so nhan vien: ";
	cin >> a[i].nhanvien;
}
//
void outdn(doanhnghiep a[], int i) {
	cout << "Du lieu doanh nghiep thu " << i << " la: " << endl;
	cout << "Ma doanh nghiep: " << a[i].madn << endl;
	cout << "Ten giam doc: " << a[i].director << endl;
	cout << "So von doanh nghiep: " << a[i].vondl << endl;
	cout << "So nhan vien: " << a[i].nhanvien << endl;
}
//
void nhapsodn(doanhnghiep a[], int n) {
	cout << endl;
	for (int i=0; i < n; i++) {
		indn(a, i);
	}
}
//
void xuatsodn(doanhnghiep a[], int n) {
	cout << endl;
	for (int i=0; i < n; i++) {
		outdn(a, i);
	}
}
int main() {
	int n;
	doanhnghiep a[100];
	do {
		cout << "Nhap so doanh nghiep: ";
		cin >> n;
	} while (n <= 0);
	nhapsodn(a, n);
	cout << endl;
	xuatsodn(a, n);
	getchar();
}

Cái này còn tùy bạn chạy trên hệ điều hành nào. Nhưng bạn có thể sửa bằng cách viết 2 lần liên tiếp lệnh nhập mã doanh nghiệp:

gets(a[i].madn);
gets(a[i].madn);
1 Like

okei bạn viết 2 lần như vậy thì nhâp được nhưng mà bạn cho mình hỏi tại sao lại bị lội như vậy. Mình đã có lệnh xóa bộ đệm fflush(stdin) rồi mà.

Ah, tùy hệ điều hành và trình biên dịch. VD bạn dùng Mac hoặc Linux thì lệnh fflush không có tác dụng hoặc không được phép dùng.

VS bỏ fflush(stdin) lâu rồi. Dùng cin.ignore là đẹp.

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