Chào mọi người, mình mới học C đang làm lab xây dựng chương trình lưu thông tin sinh viên.
Input: Nhập vào từ bàn phím các thông tin sinh viên như: mã số sinh viên, tên sinh
viên, ngành học, điểm trung bình.
Output: Xuất ra thông tin của tất cả sinh viên trên màn hình
Đây là code của mình:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct SinhVien
{
char maSV[50];
char tenSV[50];
char nganhhoc[50];
float diemTB;
};
int main(int argc, char *argv[])
{
struct SinhVien mangSV[50];
int i,n;
printf("Nhap so luong sinh vien moi them : ");
do
{
scanf("%d",&n);
if(n<=0)
{
printf("Nhap lai so sinh vien: ");
}
}
while(n<=0);
printf("Nhap thong tin moi sinh vien: \n");
for(i=0; i<n; i++)
{
fflush(stdin);
printf("Nhap ma sinh vien: ");
scanf("%s",&mangSV[i].maSV);
printf("Nhap ten sinh vien: ");
gets(mangSV[i].tenSV);
printf("Nhap nganh hoc: ");
gets(mangSV[i].nganhhoc);
printf("Nhap diem trung binh: ");
scanf("%f",&mangSV[i].diemTB);
}
printf("Thong tin sinh vien vua nhap la: ");
for(i=0; i<n; i++)
{
printf("Ma sinh vien: %s\n", mangSV[i].maSV);
printf("Ten sinh vien: %s\n", mangSV[i].tenSV);
printf("Nganh hoc: %s\n", mangSV[i].nganhhoc);
printf("Diem trung binh: %f\n", mangSV[i].diemTB);
}
return 0;
}
Vấn đề mình gặp phải là lúc đầu mình có sử dụng hàm scanf để nhập thông tin vào mảng nhưng vì scanf ko nhận khoảng trống ở phần họ tên đẩy tên xuống phần ngành học vì vậy mình đổi sang dùng gets nhưng vấn đề là mình chỉ nhập được mã sinh viên sau đó chương trình bỏ qua bước nhập họ tên và nhảy đến phần nhập ngành học và điểm, phần tử thứ 2 trong mảng khi nhập vào cũng vậy, mình đã tìm đọc lại tài liệu nhưng vẫn không hiểu tại sao, và cách nhập như thế nào, mong các bạn giúp đỡ giải đáp, mình xin cảm ơn!