这是我的代码示例:
int main(int argc, char* argv[])
{
char* fileName = "%appdata%\\log.log";
FILE *file;
file = fopen(fileName, "a+");
time_t startTime = time(0);
fputs("Started logging at: ", file);
fputs(ctime(&startTime), file);
fclose(file);
printf("%s", fileName);
return 0;
}
我的程序归结为printf()
语句,并打印:
%APPDATA%\ log.log
我知道这是Windows计算机的可行位置,为什么程序无法生成.log
文件?我应该使用什么解决方法来使其工作?
答案 0 :(得分:4)
%appdata%
是一个环境变量,它们不会自动解析,需要使用getenv函数调用显式检索它们的值。
答案 1 :(得分:4)
fopen
调用不知道%appdata%
是什么,因为它无法将其神奇地转换为路径。您必须使用ExpandEnvironmentStrings
函数自行扩展路径。例如(另):
char dest[MAX_PATH];
ExpandEnvironmentStrings(fileName, dest, MAX_PATH);
file = fopen(dest, "a+");