2012-01-15 8 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[]) 
    {...} 

関数を呼び出すには、長さと文字列を格納する必要がありますか?あなたは、単にargv[1]を使用することができます:)

+1

'argv [1]'はヌルで終了する文字列であるため、長さを渡す必要はありません。 'fopen()'は実行時に文字列の長さを決定する 'strlen()'を使用します。 –

答えて

4

(第二の問題に関して)、それは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配列の第二の位置にポインタを渡します。

argcargvを渡したい場合は、そのまま渡してください。彼らのタイプは変わりません。

関連する問題