为什么我无法创建此文件?

时间:2013-04-06 23:19:40

标签: c windows file-io

这是我的代码示例:

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

2 个答案:

答案 0 :(得分:4)

%appdata%

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

答案 1 :(得分:4)

fopen调用不知道%appdata%是什么,因为它无法将其神奇地转换为路径。您必须使用ExpandEnvironmentStrings函数自行扩展路径。例如(另):

char dest[MAX_PATH];
ExpandEnvironmentStrings(fileName, dest, MAX_PATH);
file = fopen(dest, "a+");