在C语言中,如何使用文件的输入重定向?

在C语言中,如何使用文件的输入重定向?,c,io-redirection,C,Io Redirection,我是一个非常初级的程序员,C语言是我唯一学过的语言。我已经对文件的输入重定向做了彻底的研究,试图弄清楚它是如何工作的,但我不知道该在哪里使用该命令,也不知道它是如何使用的。我的问题是,我应该把重定向命令行放在程序的什么地方?我知道它看起来是这样的:./a

我是一个非常初级的程序员,C语言是我唯一学过的语言。我已经对文件的输入重定向做了彻底的研究,试图弄清楚它是如何工作的,但我不知道该在哪里使用该命令,也不知道它是如何使用的。我的问题是,我应该把重定向命令行放在程序的什么地方?我知道它看起来是这样的:./a 如果要从重定向读取,则程序需要从
stdin

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

    fgets(line, sizeof line, stdin);

    puts(line);

    return 0;
}
如果您这样执行程序:

$ ./readline
$ echo "Hello World" | ./readline
Hello World
$ ./readline < filename
First line of filename
然后用户必须输入文本并按enter键

如果您这样执行程序:

$ ./readline
$ echo "Hello World" | ./readline
Hello World
$ ./readline < filename
First line of filename
$echo“Hello World”|。/readline
你好,世界
$./readline
然后将
stdin
连接到管道/重定向。你不必这么做 担心这一点,执行命令的shell会执行工作(连接
stdin
到管道等),以便 您的程序只需要从
stdin
读取

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

无需将其放入程序中。在程序中,只需使用scanf或任何你想要的标准输入的输入函数。我不完全理解你的问题。你到底想让你的程序做什么?你现在在尝试什么?你所描述的重定向不是由你的程序完成的。它由命令shell/解释器完成。例如,在命令行中,输入
您的可执行文件
。精确的语法取决于您使用的shell或命令行解释器。使用和|重定向是shell所做的事情,因此它仅在您从程序内调用shell时适用,例如,使用system()。您也可以使用fork()和dup()等手动操作,但我认为这不是您的想法。您表述问题的方式我看不到在10页或更少的篇幅内回答问题的方法:(从你的问题来看,你似乎缺乏编写执行文件重定向的C程序所需的大量知识。对不起,我只能建议你学习C语言(C不是“程序”),熟悉操作系统如何处理“管道”以及这对“重定向”意味着什么。还有标准可执行文件的“标准流”(输入、输出、错误)…执行程序($echo“Hello World”|./readline Hello World$。/readline