opendir错误?

时间:2012-04-20 12:26:33

标签: c++ c opendir

我对这个问题感到错误:

  dp = opendir ("%APPDATA%/.");

  output: 
  Couldn't open directory: Mo such file or directory.

但是我没有对这个问题产生错误:

dp = opendir ("C:/Users/xrobot/AppData/.");

output:
.
..
Local
LocalLow
Roaming

为什么?

2 个答案:

答案 0 :(得分:7)

opendir不会像%APPDATA%那样扩展元变量,而shell会这样做。所以这些东西可以从命令行运行,但不能从程序运行。在您的程序中,您必须使用绝对路径或相对路径。

您可以使用getenv()

获取所需的路径
const char *appData = getenv("APPDATA");
if (appData) {
    dp = opendir(appData);
} else {
    /* die or recover */
}

答案 1 :(得分:2)

因为第一个opendir LITERALLY 试图打开目录%APPDATA%/.