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