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

xbo*_*nez 0 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;
}
Run Code Online (Sandbox Code Playgroud)

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

gcc sign.c < bright_side_of_life > output
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*ler 6

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

gcc -o sign sign.c
./sign < bright_side_of_life > output
Run Code Online (Sandbox Code Playgroud)

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

./sign < bright_side_of_life | cat > output
Run Code Online (Sandbox Code Playgroud)

但是,I/O重定向更为正常,并且(尽管在此上下文中确实无关紧要)更高效.