fgets() 没有得到输入

fgets() is not getting input

fgets() 正在跳过并且不接受输入。我该如何解决?我试过使用 scanf(),但 scanf() 正在接受第一个 space 的输入。我想接受以下输入:Steve Jobs

#include<stdio.h>
int main()
{
    // ints
    int age;
    printf("Enter your age: ");
    scanf("%d", &age);
    printf("You are %d \n", age);

    // chars
    char grade;
    printf("Enter your grade: ");
    scanf(" %c", &grade);
    printf("You got an %c on the test \n", grade);

    // doubles
    double gpa;
    printf("Enter your gpa: ");
    scanf("%lf", &gpa);
    printf("Your gpa is %lf \n", gpa);

    // strings
    char name[20];
    printf("Enter your name:");
    fgets( name, 20, stdin);  // this line is not working
    printf("Hello %s! \n", name);


    return 0;
}

这个:

scanf("%lf", &gpa);

在标准输入

中留下一个换行符\n

这个:

fgets(名称, 20, 标准输入);

消耗换行后停止输入\n

您可能想了解字符集,类似于:

scanf( "%19[^\n]", name );

或者在调用 fgets()

之前简单地调用:getchar()