将C程序的输出管道输出到文件(bash)

时间:2010-10-12 02:12:26

标签: c bash piping

我只是尝试用bash,所以我用C编写了一个简单的程序来计算文件中的字符数。

这是我的C程序:

#include <stdio.h>

int main()
{
  int i, nc;
  nc = 0;
  i = getchar();
  while (i!=EOF){
    nc = nc + 1;
    i = getchar();
  }
  printf("%d\n",nc);

  return 0;
}

这是我用来编译和执行的bash命令:

gcc sign.c < bright_side_of_life > output

我的输出文件完全是空的。我哪里错了?

2 个答案:

答案 0 :(得分:6)

您必须先编译,然后运行:

gcc -o sign sign.c
./sign < bright_side_of_life > output

另外,从技术上讲,这不会将程序的输出传递给文件;它只是重定向它。如果你真的想要一个管道,你可能会进行一些“猫科动物滥用”(意思是,使用'cat'命令):

./sign < bright_side_of_life | cat > output

然而,I / O重定向更为正常,并且(虽然在这种情况下无关紧要)更有效。

答案 1 :(得分:3)

gcc sign.c -o output
./output < bright_side_of_life > size.txt

我希望你实际上是在练习你的C语言。否则,只需使用wc工具