C重定向导致scanf不接受输入

时间:2019-02-15 23:10:37

标签: c gcc clang scanf

由于某种原因,在使用c重定向将输入传递给stdin后,scanf无法正常工作。 我已经在没有c重定向的情况下测试了相同的代码,并且效果很好。

此外,我在使用 fflush(stdin)进行scanf操作之前尝试过刷新stdin,但这也行不通。

一样运行我的可执行文件
./3240Assignment0 < test-input.txt

运行scanf操作的代码如下

int main(int argc, char** argv){
    fflush(stdin);
    char input[100];
    char *output = "Thank you for your message!";

    puts("Tell me something nice:");
    scanf("%s", input);
    printf("%s\n\n", output);
}
  

问题是终端机没有给我机会进入   任何信息或输入。

我的终端的脚本

Joes-MacBook-Pro:a0 joemanto$ make test
./3240Assignment0 < test-input.txt
Tell me something nice:
Thank you for your message!

Joes-MacBook-Pro:a0 joemanto$ 

1 个答案:

答案 0 :(得分:3)

它接受输入,它只接受您告诉它接受文件输入的文件中的输入。

您可以使用STDIN三种选择:

  • assignment:交互式输入
  • assignment < input.txt:从文件中获取输入
  • command | assignment:从命令command(管道)的结果中获取输入

由于您使用的是第二种形式,因此也无法进行交互式输入。它是一个输入源,而只有一个。