2011-02-10 2 views
0

stdin을 사용하는 코드 조각이 있습니다. 명령 줄에서 프로그램을 실행할 때 wav 파일 즉 /Users/username/Desktop/music.wav의 위치를 ​​전달합니다.코드 조각 내에서 stdin 바꾸기

코드는 C로만 작성되었습니다. stdin 변수는 2 개의 함수에서 실행됩니다.

코드 내의 stdin을 파일 디렉토리 및 위치의 입력으로 대체하는 방법은 무엇입니까?

즉, '/Users/username/Desktop/music.wav'를 두 가지 다른 C 함수로 하드 코딩하는 방법은 무엇입니까?

+0

사용하는 리눅스? – BlackBear

+0

이전의 비슷한 질문에서 그는 Mac OS X –

답변

1

나는 freopen을 찾고 있다고 생각합니다. 만약 내가 제대로 이해하고

, 당신은 argv[1]에서 파일 이름을 읽고) (freopen을 호출

freopen(argv[1], "r", stdin); 
+1

@ Simone을 사용하는 것 같습니다. 정말? 어떻게 든 문자열을 전달하는 문제가 아닌가? –

+0

@Simone. 게다가 이것은 stdout을위한 것 같습니다. stdin에서 작동합니까? –

+0

@Eric 업데이트를 참조하십시오. – Simone

0

을하지 당신이 원하는 것처럼

그것은 소리 나는 물론 ....의 하드 와이어를 장려 할 것을 파일 위치를 정의하려면 & 여러 위치에서 참조 하시겠습니까?

# & 헤더의 경로를 정의한 다음 여러 파일에이를 포함시킬 수 있습니다.

예.

header.h가

#define FILE_LOCATION "/Users/username/Desktop/music.wav" 

myProgram.c

#include "header.h" 

void functionA() { 
    fopen(FILE_LOCATION, ...); 

    /* 
    * etc .. 
    */ 
} 

void functionB() { 

    printf("The file is %s\n", FILE_LOCATION); 

    /* 
    * etc .. 
    */ 
} 

myOtherProgram.c

#include "header.h" 

void someOtherFunction() { 
    doSomethingWith(FILE_LOCATION); 
} 

void doSomethingWith(char *fileLoc) { 

}