2014-10-05 4 views
0

코드로 작성된 두 개의 프로그램이 작동하지 않습니다배관이있는이 개 프로그램에 대한 C

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; 
} 

p1 | p2이 CMD에 입력되면 예상 출력 은 Program1 | Program2입니다. 하지만 내가 얻는 결과는 (null) | Program 2입니다. 분명히 p1의 출력은 p2에서 가져 오지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

1

배관이 어떻게 작동하는지 이해하지 못합니다. 무언가를 다른 것으로 연결하는 것은 "프로그램 하나의 표준 출력을 사용하여 프로그램 2의 표준 입력에 제공하는 것을 의미합니다." argv을 사용하면 프로그램 1의 출력이 프로그램 2의 인수로 가고 있다고 가정하고 올바르지 않습니다. 찾고있는 결과를 얻으려면 scanf (또는 이에 상응하는 일부) 표준 입력이 필요합니다.

출력이 인수로 입력되는 방식으로 p1을 호출해야합니다.

+0

이렇게했습니다. 그런데 어떻게 p1을 호출하여 그 결과가 인수로 p2로 들어가는가? – sope

+0

| CMD exe 문자입니다. CMD.EXE 이외의 프로그램에는 아무런 의미가 없습니다. | 사용중인 경우 | 그런 다음 CMD.exe는이를 해석해야합니다. 나는 p2.c.에서 그것의 사용을 참조한다. – Noodles

+0

per http://stackoverflow.com/questions/2768608/batch-equivalent-of-bash-backticks 나는'/ p % in ('p1')에''p2 % a''를 제안합니다. 배치 파일의 경우 % 대신 %%를 사용해야합니다. – keefer