重定向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);
}
}