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);
}
}
Bài liên quan
Đâ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
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
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.
em cảm ơn anh dùng fflush(stdin) thì nó cho nhập rồi