【发布时间】:2019-02-23 15:00:08
【问题描述】:
我将使用管道传递一个文本文件。
cat ./file.txt | ./pargrep word
我试图获取文件名
fgets(buf, NULL, stdin);
我怎样才能只得到文件名而不是文件内容,我在使用gets时得到。我需要阅读该文件,该文件非常大,需要阅读两次。
【问题讨论】:
-
如果您查看
cat ./file.txt的输出,您如何知道文件名?您的程序会获得相同的信息,并且能够使用您使用的相同方法。如果文件名在那里不可见,那么您可以使其可见,例如首先管道文件名,然后是内容。 -
@Yunnosch 我如何在程序中通过管道获取文件名。
-
也许像
echo ./file.txt | ./pargrep word这么简单?管道名称和内容需要一些命令行语法魔法,或者可能更简单,一个简短的脚本。 -
我认为在管道输入的情况下您可能不需要文件名。你能仔细检查一下课堂作业真的需要吗?我问是因为查找文件名的具体工作(如果你只得到问题中所示的命令行并且你只能影响 pargrep 的实现)实际上可能是不可能的。我会乐观地假设你的老师没有设定不可能完成的任务......
-
任务是直接从文件中获取内容,文件是一个大文件,需要grep查找文件中的一个单词并打印出来,就像grep一样,但需要通过线程来实现。我将整个文件存储在一个字符串数组中。在存储它之前,我必须检查其中的行数,然后开始存储它,所以我去读取文件两次。标准输入不允许我阅读两次。所以,我打算获取文件名。关于如何解决的任何线索?