Fgets пропускает вводы [дубликаты]

На этот вопрос уже есть ответ:

fgets не работает после scanf 7 ответов

Я попытался осмотреться и не могу понять, где лежит ошибка. Я знаю, что это как-то связано с тем, как я использовал fgets, но я не могу понять для себя, что это такое. Я читал, что смешивание fgets и scanf может привести к ошибкам, поэтому я даже изменил свой второй scanf на fgets, и он по-прежнему пропускает остальные входные данные и печатает только первый.

int addstudents = 1;
char name[20];
char morestudents[4];

for (students = 0; students<addstudents; students++)
{
    printf("Please input student name\n");
    fgets(name, 20, stdin);
    printf("%s\n", name);
    printf("Do you have more students to input?\n");
    scanf("%s", morestudents);
    if (strcmp(morestudents, "yes")==0)
    {
    addstudents++;
    }
}

Мой вклад - Джо, да, Билл, да, Джон, нет. Все идет по плану, если я использую scanf вместо первых fgets, но я хотел бы иметь возможность использовать полные имена с включенными пробелами. Куда я иду не так?

Ответы на вопрос(1)

Ваш ответ на вопрос