从文件输入(使用命令行),然后从普通stdin键盘输入(C)

时间:2018-12-01 18:25:42

标签: c

是否可以使用下面的命令将* .txt文件用作某些内容的输入-

a.out<input.txt

然后使用用户的普通输入吗?

1 个答案:

答案 0 :(得分:0)

一种选择是使用:

$ ./a.out input.txt     # No shell I/O redirection

然后打开(每个)命令行参数进行读取,读取并关闭。完成后,您可以从stdin读到EOF。

在类似Unix的系统上,您还可以支持:

$ ./a.out < input.txt   # Shell I/O redirection

从标准输入读取到EOF,然后执行从键盘读取的许多操作之一:

  • 打开/dev/tty并从中读取。
  • 打开/dev/tty并将其复制到stdinfreopen())。

还有一些较少的洁净可能性;一种是使用fdopen()将标准输出或标准错误文件描述符用作输入文件描述符。如果流连接到终端,这通常会起作用。启动外壳程序的经典方法是打开/dev/tty进行读取和写入,然后将读取/写入描述符复制到标准输入,输出和错误。如果将输出通过管道传输到另一个程序,或重定向到文件,则将无法正常工作。您可以使用isatty()检查文件描述符是否与终端关联。

可能还有其他方法可以实现-如果您使用的是Windows,则可以使用其他方法。

我个人会使用“将命令行参数读取为文件,然后读取标准输入”选项,但是选择YMMV。