0

この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

なんで ?

4

2 に答える 2

7

opendir%APPDATA%シェルのようにメタ変数を展開しません。したがって、このようなことはコマンドラインからは機能しますが、プログラムからは機能しません。プログラムでは、絶対パスまたは相対パスを使用する必要があります。

getenv()、で必要なパスを取得できる可能性があります

const char *appData = getenv("APPDATA");
if (appData) {
    dp = opendir(appData);
} else {
    /* die or recover */
}
于 2012-04-20T12:29:10.850 に答える
2

最初opendirは文字通りディレクトリを開こうとしているから%APPDATA%/.です。

于 2012-04-20T12:29:37.467 に答える