このistructionでエラーが発生します:
dp = opendir ("%APPDATA%/.");
output:
Couldn't open directory: Mo such file or directory.
しかし、私はこのistructionでエラーを取得しません:
dp = opendir ("C:/Users/xrobot/AppData/.");
output:
.
..
Local
LocalLow
Roaming
なんで ?
opendir
%APPDATA%
シェルのようにメタ変数を展開しません。したがって、このようなことはコマンドラインからは機能しますが、プログラムからは機能しません。プログラムでは、絶対パスまたは相対パスを使用する必要があります。
getenv()
、で必要なパスを取得できる可能性があります
const char *appData = getenv("APPDATA");
if (appData) {
dp = opendir(appData);
} else {
/* die or recover */
}
最初opendir
は文字通りディレクトリを開こうとしているから%APPDATA%/.
です。