У меня есть задача, которая мне нужна, чтобы ввести всю информацию о студентах (ID, имя, класс) в качестве базы данных в качестве исходного кода ниже. Мой исходный код здесь полностью действителен в отношении синтаксиса (не сообщается об ошибке, как делает мой g cc), но я не могу ввести оценки учеников. Когда я запускаю свою программу, она пропускает шаг ввода оценки учащегося и шаг ввода следующего идентификатора учащегося. Я поместил getchar()
для удержания символа \n
, но он может вообще не работать или есть другая причина этой ошибки.
typedef struct
{
char id[10];
char name[50];
float grade;
char assess;
}student;
student std[50];
do {
printf("How many students you want to add?\n");
scanf("%d", &num);
if(num<0 || num>50)
printf("Your number must be positive or smaller than or equal to 50!\n");
} while(num<0||num>50);
for(i = a; i < num; i++)
{
printf("Student's id No.%d:", i);
fgets(std[i].id, MAX, stdin);
getchar();
printf("Student's name No.%d:", i);
fgets(std[i].name, MAX, stdin);
getchar();
printf("Student's grade No.%d:", i);
do {
scanf("%f", std[i].grade);
if(std[i].grade < 0 || std[i].grade > 10)
printf("Please re-input grade, it must be between 0 and 10\n");
} while(std[i].grade < 0 || std[i].grade > 10);
std[i].assess=assess(std[i].grade);
}