【发布时间】:2014-10-01 00:36:23
【问题描述】:
所以我打算通过执行以下命令来接受文本文件:
$ sort < list.txt
我知道列表文本文件正在输入到我的排序程序中,但我如何实际使用程序中的信息?如何阅读?
我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
char c;
while (c != EOF){
c = getchar();
printf("%c ",c);
}
return (0);
}
例子:
$ ./sort.c < input.txt
./sort.c: line 3: $'\r': command not found
./sort.c: line 4: syntax error near unexpected token `('
'/sort.c: line 4: `int main(int argc, char** argv) {
【问题讨论】:
-
#include <stdio.h>并从stdin读取。 -
重定向是在你的程序之外发生的。 Shell 将负责在您的程序启动之前 打开
list.txt文件并将其连接到程序的标准输入。你的程序不需要做任何事情。你只会注意到isatty(STDIN_FILENO)如果你敢问它会返回0。 -
@5gon12eder 哦,我相信你成功了。我的评论告诉如何;您的评论解释了为什么,因此更具教育意义。我只是没想到——我早就知道重定向是如何工作的,就像一条鱼不注意水:)
-
@5gon12eder ,我该如何使用文本文件中的信息?
-
现在我真的很困惑。你知道如何在没有重定向的情况下从标准输入中读取,@ImBadAtProgramming?如果是,一切都很好。如果没有,请按照 Tom Zych 所说的做(并编辑问题的标题)。