我对这个问题感到错误:
dp = opendir ("%APPDATA%/.");
output:
Couldn't open directory: Mo such file or directory.
但是我没有对这个问题产生错误:
dp = opendir ("C:/Users/xrobot/AppData/.");
output:
.
..
Local
LocalLow
Roaming
为什么?
答案 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%/.
。