是否可以使用下面的命令将* .txt文件用作某些内容的输入-
a.out<input.txt
然后使用用户的普通输入吗?
答案 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
并将其复制到stdin
(freopen()
)。还有一些较少的洁净可能性;一种是使用fdopen()
将标准输出或标准错误文件描述符用作输入文件描述符。如果流连接到终端,这通常会起作用。启动外壳程序的经典方法是打开/dev/tty
进行读取和写入,然后将读取/写入描述符复制到标准输入,输出和错误。如果将输出通过管道传输到另一个程序,或重定向到文件,则将无法正常工作。您可以使用isatty()
检查文件描述符是否与终端关联。
可能还有其他方法可以实现-如果您使用的是Windows,则可以使用其他方法。
我个人会使用“将命令行参数读取为文件,然后读取标准输入”选项,但是选择YMMV。