这两个程序的代码是,
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 中获取。我该如何解决这个问题?
答案 0 :(得分:1)
您不了解管道是如何工作的。将某些东西输入其他东西意味着&#34;使用程序1的标准输出并将其提供给程序2的标准输入。&#34;通过使用argv
,您假设程序1的输出将转到程序2的参数并且不正确。您需要scanf
(或等效的)标准输入才能获得您想要的结果。
或者你需要以这样的方式调用p1,使得它的输出作为参数被输入。