2012-01-11 5 views
3

相対パスを指定すると、fopen()でファイルを開くことができません。 Visual Studio 2010でWindowsマシンでこのコードを実行しています。相対パスでファイルを開くと失敗する

const char* OUTPUT_FILE = "output/PERFORMANCE.txt"; 
FILE* f = fopen(OUTPUT_FILE, "w"); 

このように相対パスを指定する方法は間違っていますか?私は "\"区切り記号を使うべきですか?

同じ形式を使用して絶対パスを指定すると正常に動作します。 (例: "C:/output/PERFORMANCE.txt")

+0

これはうまくいくはずです。質問は何に相対的ですか?あなたの作業ディレクトリは何ですか? – Mysticial

+2

'.exe'が実行されているディレクトリは、あなたが期待するものではないかもしれません。その後、あなたの相対的なパスは間違っています。 –

+0

OUTPUT_FILEを "PERFORMANCE.txt"と指定すると、新しいファイルが.exeと同じディレクトリに作成されます。ですから、作業ディレクトリは.exeディレクトリと同じであると思います。 – arjunurs

答えて

0

outputサブディレクトリは存在しますか?書き込み用のファイルを開くと、ファイルが存在しない場合は作成されますが、ファイルへのパスは作成されません。あなたが現在あるかディレクトリ

+0

はい、出力ディレクトリが存在します – arjunurs

2

チェックWindowsでは、少なくとも2つの方法があります。

  1. _getcwd
  2. GetCurrentDirectory

、あなたはあなたがいると思うディレクトリにあることを確認してくださいディレクトリoutputがディレクトリに存在することを確認します。存在しない場合は、ディレクトリを作成する必要があります。

  1. _mkdir
  2. CreateDirectory

任意の中間ディレクトリが存在しない場合、ファイルが(でも書き込み用)を開くに失敗します:Windowsでは、少なくとも2つの方法があります。また、ターゲットディレクトリへのアクセス権がない場合は、ファイルを開くことができません。

関連する問題