Это потому, что в буфере stdin есть новая строка в буфере. Чтобы удалить его, используйте:
fflush(stdin);
Итак, ваш код теперь такой:
#include <stdio.h>
void enter(){
char name[20];
int Age;
float Highbp;
float Lowbp;
printf("name: ");
fflush(stdin);
fgets(name, 20, stdin);
printf("age: ");
scanf("%d", &Age);
printf("high bp: ");
scanf("%f", &Highbp);
printf("low bp: ");
scanf("%f", &Lowbp);
return ;
}
void option(){
char choice = getchar();
if(choice == 'n'){
enter();
}
}
int main(int argc, char **argv)
{
option();
}
Отредактированный
Так как все здесь говорят, что не рекомендуется использовать fflush(stdin);
(хотя это работало для меня каждый раз. :))
Вот еще одно решение. Вместо fflush(stdin)
используйте:
while(getchar()!='\n');
Это очистит буфер для новой строки, которая может пропустить следующий вызов fgets.