C プログラムの引数としてファイル名を指定したいと考えています。fopen
以下のような方法ですべての可能な方法を試しました。
fp = fopen(*argv[2], "r");
こちらも使用"*argv[2]"
しましたが動作しませんでした。これを正しく使用できるように、どこが間違っているのかを知りたいです。ありがとう!
そのはず
fp = fopen(argv[2], "r");
argv[0]
には exe 名 (パス付き) が含まれ、渡す他の引数は から始まることに注意してくださいargv[1]
。
C でのコマンド ライン引数の使用の詳細については、これを参照してください。
引数として取得している場合、メイン関数char **argv
では、配列の添え字によってargv[1]
自動的にchar *
、fopen によって引数として期待される に変換されます。
fp = fopen(argv[2], "r" )
十分です
argv は文字ポインタの配列です。この配列にインデックスを付けると、コマンド ラインで渡した文字列が得られます。追加でさらに逆参照する必要はありません*
fopenは、ファイル名の引数として char* を取ります。
FILE *fopen(const char *path, const char *mode);
次のように使用するだけです。
fp = fopen(argv[2], "r"); // if 2nd argument passed is your filename