重定向stdin - C.

时间:2014-10-01 00:36:24

标签: c linux input stdin

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

$ 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) {

1 个答案:

答案 0 :(得分:2)

当您使用&#39; <&#39;如您在帖子中所写的命令行上的符号,操作系统会为您读取文件,并通过stdin将内容提供给您的程序。所以,你需要做的就是从标准输入读取。

这是一个非常简单的代码片段,用于演示 -

#include <stdio.h>

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