重定向stdin-C

重定向stdin-C,c,linux,input,stdin,C,Linux,Input,Stdin,因此,我打算通过执行以下命令来接受文本文件: $ sort < list.txt $sort

因此,我打算通过执行以下命令来接受文本文件:

$ sort < list.txt 
$sort
我知道列表文本文件正在输入到我的排序程序中,但我如何实际使用程序中的信息?我怎么读呢

我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {

    char c;   

    while (c != EOF){
        c = getchar();
        printf("%c ",c);
    }

   return (0);
}
#包括
#包括
int main(int argc,字符**argv){
字符c;
而(c!=EOF){
c=getchar();
printf(“%c”,c);
}
返回(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) {
$./sort.c
当您使用“
\include
并从
stdin
读取时。重定向是在程序外部进行的。shell将负责在程序启动之前打开
list.txt
文件,并将其连接到程序的标准输入。您的程序无需对此做任何操作。你只会注意到,
isatty(STDIN_FILENO)
如果你敢问它,就会返回0。@5gon12eder哦,我肯定你答对了。我的评论告诉你怎么做;你的评论解释了为什么,因此更具教育意义。我只是没有想到——我知道重定向是如何工作的,它就像一条鱼没有注意到水一样:)@5gon12eder,我如何使用文本文件中的信息?现在我真的很困惑。你知道如何在没有重定向的情况下读取标准输入,@ImBadAtProgramming?如果知道,一切都很好。如果不知道,按照Tom Zych说的做(编辑你问题的标题)。
#include <stdio.h>

int main() {
    char line[256];
    FILE *fp = stdin;
    while(fgets(line, sizeof(line), fp) != NULL) {
        printf("%s", line);
    }
}