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, но я хотел бы иметь возможность использовать полные имена с включенными пробелами. Куда я иду не так?