0

这是我的代码示例:

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文件?我应该使用什么解决方法来使其工作?

4

2 回答 2

4
%appdata%

是一个环境变量,它们不会自动解析,需要使用getenv函数调用显式检索它们的值。

于 2013-04-06T23:24:45.497 回答
4

fopen调用不知道是什么%appdata%,因为它不能神奇地将其转换为路径。ExpandEnvironmentStrings您必须使用该功能自己扩展路径。例如(未经测试):

char dest[MAX_PATH];
ExpandEnvironmentStrings(fileName, dest, MAX_PATH);
file = fopen(dest, "a+");
于 2013-04-06T23:30:12.170 回答