これは非常に奇妙なエラーです。
私は Visual Studio 2012 を使用しており、C++ プロジェクト (C プロジェクトのコンテナーとして) で、次の方法でファイルを読み込んでいます。
const char* fname = "SomeFile.csv";
if(!(fp = fopen(fname, "r")))
{
printf("Error! Could not open %s!\n",fname);
return;
}
CSV は .EXE と同じフォルダーにあり、それがこのプログラムの意図です。
1. デバッグで実行すると、CSV の読み取りに失敗します。
2. ファイルへのフル パス名を入力すると、正しく動作し、CSV が読み込まれます。
3. Windows エクスプローラーで出力フォルダーに移動し、.exe を実行すると、CSV が正しく読み込まれます。
4.ここが奇妙な部分です。別のフォルダー (他の場所) に移動し、.exe を含むフル パスを Windows エクスプローラーに貼り付けると、プログラムは正常に起動しますが、CSV の読み取りに失敗します。
注意点として、フォルダーをエクスプローラーに読み込んでいて、VS2012 デバッガーで実行すると、CSV の読み込みにも失敗します。
ここで何が起こっているのですか?ウィンドウがエクスプローラーで開いているときに実行している場合にのみ見つかるのはなぜですか?