Использовать fgets() чтобы забрать весь юзерский ввод (чтобы избежать повторного чтения).
#define BUFLEN 80
char *str;
str = (char *) calloc(BUFLEN, 1);
printf("Before changing the settings, read the command manual .help\n");
printf("Are you sure? (Y/y(for 'Yes') or N/n(for 'No' - setting by default)\n");
for(;;)
{
fgets(str, BUFLEN, stdin);
*(str + 1) = '\0';
if ((*str == 'Y') || (*str = 'y'))
{
// Делаем что-то
break;
}
else
{
// Сообщаем юзеру, что он чудак, снова даем приглашение на ввод
bzero(str, BUFLEN);
}
}
free(str);
Это если нужно разбирать только ситуацию "y" - да, все остальное - нет. Если нужно разобрать 'y' - да, 'n' - что-то еще, остальное - юзер чудак - добавить еще один if после проверки на 'y'