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