由于某种原因,使用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$
它接受输入,它只接受你告诉它接受输入的文件的输入。
STDIN有三个选项:
assignment
:互动输入assignment < input.txt
:从文件中获取输入command | assignment
:从命令command
(管道)的结果中获取输入由于您使用的是第二种形式,因此您也无法进行交互式输入。它是一个输入源,只有一个。