30/09/2018, 18:48

Thắc mắc câu lệnh bị bỏ qua

Cho em hỏi em sai chỗ nào mà khi chạy nó bỏ qua nhập họ tên và bắt đầu cho nhập từ mã sv??

void nhaptungsinhvien(sinhvien&x,int n){
	for (int i=0;i<n;i++){
		printf("
Nhap ho va ten: ");
				gets(x.hoten);
		printf("
Ma SV: ");
				gets(x.ma);
		printf("
Gioi tinh (1=nam,0=nu): ");
		scanf("%d",&x.gioitinh);
		printf("
Nam sinh: ");
		scanf("%d",&x.namsinh);
		printf("
Diem so: ");
		scanf("%f",&x.diem);
	}
}
... viết 20:55 ngày 30/09/2018

Đây là lỗi dữ liệu nhập vào buffer nhưng đọc vào biến bị thiếu ký tự Enter.

http://forum.uit.edu.vn/threads/31294-C-Hoi-ve-string-rat-rat-co-ban-?s=668c9c8e73060c6f304e035635e5d926

Đạt Đỗ viết 20:54 ngày 30/09/2018

nhập số n trong hàm main và chạy hàm đó, nó dính dấu enter xuống dòng. cin.ignore(); để bỏ 1 cái thừa đi,
Trường họp này bị khi bạn đã nhập 1 số xong dùng hàm lấy nhưng chuỗi có luôn kí tự trắng như gets hay getline(std::cin,); nó sẽ lấy enter trước đó. chúc bạn học tốt

... viết 20:54 ngày 30/09/2018

Code ở trên thuần ngôn ngữ C, không nên sử dụng cin.ignore() vì có thể gây nhiễu kiến thức cơ bản.
Một vài thầy cô trong khoa trường Duy Tân cũng có thói quen sử dụng song song C và C++ trong chương trình nên sinh viên cũng nhầm theo.

17XGOD viết 20:56 ngày 30/09/2018

em cảm ơn anh dùng fflush(stdin) thì nó cho nhập rồi

Bài liên quan
0