Windows CM中的管道不适用于用C编写的两个程序

时间:2014-10-05 02:52:37

标签: c cmd command-prompt piping

这两个程序的代码是,

p1.c:

#include <stdio.h>

int main () {
    printf("Program1");
    return 0;
}

p2.c:

#include <stdio.h>

int main (char argc, char *argv[]) {    
    printf("%s", argv[1]);
    printf(" | Program2");
    return 0;
}

在CMD中输入p1 | p2时,预期输出 是:Program1 | Program2。但我得到的输出是:(null) | Program 2。显然, p1 的输出不会从 p2 中获取。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您不了解管道是如何工作的。将某些东西输入其他东西意味着&#34;使用程序1的标准输出并将其提供给程序2的标准输入。&#34;通过使用argv,您假设程序1的输出将转到程序2的参数并且不正确。您需要scanf(或等效的)标准输入才能获得您想要的结果。

或者你需要以这样的方式调用p1,使得它的输出作为参数被输入。