【问题标题】:Why is fgets waiting for input before it's even called?为什么 fgets 在被调用之前就等待输入?
【发布时间】:2022-06-13 22:41:32
【问题描述】:

我正在尝试编写一个简单的程序来读取一个整数和一个字符串,然后将两者都打印到标准输出。理想情况下,执行应如下所示:

Input the number.
> 10

Input the string.
> a string

number: 10
string: a string

但是,当我运行该程序时,它会在调用 scanf() 后冻结,直到提供更多输入。

Input the number.
> 10
a string

Input the string.
> 
number: 10
string: a string

为什么在调用 fgets() 之前等待输入?

 #include <stdio.h>
 
 int main()
 {
     int number;
     char string[32];
 
     printf("Input the number.\n> ");
     scanf("%d\n", &number);
 
     printf("\nInput the string.\n> ");
     fgets(string, 32, stdin);
 
     printf("\nnumber: %d\nstring: %s\n", number, string);
 }

【问题讨论】:

  • 从 scanf 中删除 '\n'

标签: c scanf fgets stdio


【解决方案1】:

似乎这个问题是重复的,或者至少与以下内容非常相关: How to read a integer followed by a string in C?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多