如何使用C中文件的输入重定向?

时间:2018-04-13 23:53:59

标签: c io-redirection

我在编码方面非常初级,C是我学习的唯一语言。我已经对输入重定向到文件进行了彻底的研究,试图弄清楚它是如何工作的,但是我不知道在哪里使用命令或者确切地说它是如何使用的。我的问题是,我在哪里准确地将重定向命令行放在程序中?我知道它看起来像这样:./ a< filename.txt,但我不知道将它放在程序中的哪个位置,或者它是否在程序中?我想使用简单的循环将文件中的数据读入scanf。另外,'a'是您正在编写的C程序的确切名称?

1 个答案:

答案 0 :(得分:4)

如果要从重定向中读取,则程序需要读取 stdin

int main(void)
{
    char line[1024];

    fgets(line, sizeof line, stdin);

    puts(line);

    return 0;
}

如果你执行这样的程序:

$ ./readline

然后用户必须输入文本并按 ENTER

如果你执行这样的程序:

$ echo "Hello World" | ./readline
Hello World
$ ./readline < filename
First line of filename

然后stdin将连接到管道/重定向。你没有必要 担心这一点,执行命令的shell完成工作(将stdin连接到管道等)以便这样做 您的程序只需要从stdin读取。

同样的事情适用于stdout,如果您希望用户调用您的程序 并在管道或重定向中使用输出,然后正常写入 stdout。 shell负责将stdout连接到管道/重定向。