首页 > 解决方案 > fgets() 没有得到输入

问题描述

fgets() 正在跳过而不接受输入。我该如何解决?我尝试使用 scanf(),但 scanf() 将输入输入到第一个空格。我想接受一个输入,例如:史蒂夫乔布斯

#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;
}

标签: cscanffgets

解决方案


这:

scanf("%lf", &gpa);

\n在标准输入中留下一个换行符

这:

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

使用换行符后停止输入\n

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

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

或简单地调用:getchar()调用之前fgets()


推荐阅读