从终端行读取文本文件?

时间:2019-09-15 10:00:38

标签: c string algorithm

因此,我了解要阅读并打印一行文本,您可以只使用printfscanf并键入它。但是,如果我想打印一个文本文件而不在终端中键入它们怎么办?我并不是说使用fopen(filename, "r")只能打开特定文件。我认为这称为重定向,但是我在理解它时遇到了麻烦。如下面的输入示例所示:

./myprogram < input.txt

2 个答案:

答案 0 :(得分:1)

这里是redirection cheat sheet。我们感兴趣的行是:

  

cmd < file:将文件的内容重定向到cmd的标准输入(stdin)。

下面是一个简单的示例,它将打印您的input.txt文件的内容。与手动输入相比,该程序永远不会等待,并且会一直循环直到到达文件末尾(注意:在某些情况下,该末尾没有结束,您可能想添加替代的中断条件)。

#include <stdio.h>

int main(void)
{
    char    buffer[100];

    while (fgets(buffer, 100, stdin))
        printf("%s", buffer);
    return (0);
}
  • ./myprogram < input.txt将打印您的input.txt
  • ./myprogram将等待您的手动输入并打印您刚刚输入的内容。

答案 1 :(得分:0)

这与您要求的不完全相同,但是您可以将文件名作为参数,并将其放入argv [1],然后使用fopen