【问题标题】:fgets() is not getting input [duplicate]fgets()没有得到输入[重复]
【发布时间】:2021-08-06 19:32:19
【问题描述】:

fgets() 正在跳过而不接受输入。我该如何解决?我尝试使用 scanf(),但 scanf() 将输入输入到第一个空格。我想输入诸如:史蒂夫·乔布斯(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;
}

【问题讨论】:

标签: c scanf fgets


【解决方案1】:

这个:

scanf("%lf", &gpa);

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

这个:

fgets(name, 20, stdin);

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

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

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

或者只是在调用fgets()之前调用:getchar()

【讨论】:

  • 使用 scanf("%19[^\n]", name);不工作..
  • 对不起,字符集前应该有一个空格,如:" %[^\n]" 前导空格像换行符一样消耗任何前导white space
猜你喜欢
  • 2022-01-10
  • 2021-12-21
  • 2018-03-17
  • 2014-12-06
  • 1970-01-01
  • 2013-02-25
  • 1970-01-01
  • 2016-12-12
  • 2017-07-07
相关资源
最近更新 更多