2012-01-15 2 views
0

FILE * fopen (const char * filename, const char * mode);을 사용하지만 파일 이름을 간접적으로 사용하는 방법을 찾으려고합니다. 또한 간접적으로 argv []에서 직접 가져온 이름을 가진 함수를 간접적으로 호출하는 방법을 알고 싶습니다. 문자열을 버퍼 char 배열에 저장하고 싶지 않습니다. 예 :문자열 배열에 이름이 이미있는 방법

int main (int argc,char *argv[]) 
    { 
     FILE *src; 
     ... 
     src = fopen("argv[1]", "r"); //1st:how to insert the name of the argv[1] for example? 
     ... 
    function_call(argc,argv); //2nd:and also how to call a function using directly argc argv 
    ... 
    } 
    void create_files(char name_file1[],char name_file2[]) 
    {...} 

함수를 호출하려면 길이와 문자 문자열을 저장해야합니까? (2 질문에 대한) :

+1

'argv [1]'은 널 종료 문자열이므로 길이를 전달할 필요가 없습니다.'fopen()'은'strlen()'을 사용하여 런타임시 문자열의 길이를 결정합니다. –

답변

4

당신은 단순히 argv[1]을 사용할 수 있습니다, 그것은 char *입니다 :

if (argc < 2) 
    /* Error. */ 

src = fopen(argv[1], "r"); 

동일은 create_files 간다.

create_files(argv[1], argv[2]); 
1

fopen은 문자 배열에 대한 포인터를 사용합니다. argv은 문자 배열에 대한 포인터 배열에 대한 포인터입니다.

fopen(argv[1], "r") 

fopen에 argv 배열의 제 2 위치에 포인터를 전달한다.

argcargv을 전달하려는 경우 그대로 전달하십시오. 그들의 유형은 변하지 않습니다.

관련 문제