如何以 C++/C 打印出我刚刚输入到程序中的文件

How can I print out the file I just inputted into my program in C++/C

本文关键字:输入 程序 文件 C++ 打印      更新时间:2023-10-16

我试图让我的程序输出我在命令行中键入的所有内容,但我流式传输到它的文件没有打印出来,因为它没有存储在 argv 中。以下是我的执行方式:

输入: ./program < file.txt

预期产出: ./program < file.txt

实际输出: ./program

为了清楚起见,我不想打印出文件中的内容。我只想打印出文件名。

文件重定向由 shell 处理,而不是由程序处理。当 shell 看到"<"时,它基本上说"当你启动这个程序时,将 stdin 映射到这个文件而不是终端"。所以,在引擎盖下,外壳会做 fork();然后关闭并打开文件的位置,然后调用execv()或类似内容来实际执行程序。同样,如果你执行 ./program *.txt,当程序看到命令行时,*.txt 已经扩展到目录中所有匹配的文件名。

我怀疑,这是一个数据流,文件名没有被流式传输到程序此外,我认为您不应该在 argv 中查找输入,您应该从 stdin 读取流内容,例如使用 scanf 的